Я делаю новый дизайн старого сайта (на php 5.2), к большому сожалению php я не знаю ((( Сейчас скрипт делает привью сохраняя пропорции, а нужно изменить обрезку изображения, что бы привью было квадратным. Помогите изменить код: PHP: ################################################################### // Crop picture // Обрезаем картинку function crop_picture ($src_file, $dst_file, $dst_width, $dst_height) { $size = getimagesize($src_file); $src_width = $size[0]; $src_height = $size[1]; $src = ImageCreateFromJPEG($src_file); if ($dst_width >= $src_width && $dst_height >= $src_height) { $dst_width = $src_width; $dst_height = $src_height; } else { $src_k = $src_width / $src_height; $dst_k = $dst_width / $dst_height; // Decrease height // Уменьшаем высоту if ($src_k > $dst_k) { $dst_height = intval($dst_height * $dst_k / $src_k); } else { // Descrease width // Уменьшаем ширину $dst_width = intval($dst_width * $src_k / $dst_k); } } $dst = ImageCreateTrueColor($dst_width, $dst_height); ImageCopyResampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height); imagejpeg($dst, $dst_file, 90); chmod ($dst_file, 0777); } ###################################################################
Ради такого кроткого фрагмента ))) наверное нет смысла отвлекать профессионалов ))) Решила задачу старым добрым CSS. Код (CSS): /* Preview */ .pv { width: 100%; } .pv-inner { position: relative; height: 0; border: none; } .pv-content { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: #eee; } .pv-content a { display: block; height: 100%; } .pv-1-1 { padding-top: 100%; } HTML: <div class="pv"> <div class="pv-inner pv-1-1"> <div class="pv-content" style="background-image:url(картинка); background-position:center center; background-size:cover;"> <a href="ссылка"></a> </div> </div> </div>
@Даша Кенно, так делают, если в каком-то виде нужен этот не квадрат, например на узких экранах или для строчного отображения анонсов (при переключении с блочного). Иначе костыль. --- Добавлено --- В данном разделе рыбку ловить бестолку. Создали бы тему во фрилансе, возможно бы и помог если и не профи то какой-нибудь студент. (Правда, там можно нарваться на кидалу. Разово могу помочь с контролем оплаты, если студент согласится.) Но дело ваше
Вместо строк Код (Text): $dst = ImageCreateTrueColor($dst_width, $dst_height); ImageCopyResampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height); вставьте Код (Text): if($src_width <= $src_height) { $dst = ImageCreateTrueColor($dst_width, $dst_width); ImageCopyResampled($dst, $src, 0, 0, 0, ($src_height - $src_width)/2, $dst_width, $dst_width, $src_width, $src_width); } else { $dst = ImageCreateTrueColor($dst_height, $dst_height); ImageCopyResampled($dst, $src, 0, 0, ($src_width - $src_height)/2, 0, $dst_height, $dst_height, $src_height, $src_height); }
наверное именно поэтому на их сайте вёрстка падает что в десктопной версии, что в адаптиве. Уделили внимание.