|
0 Всего найдено: 9
kiroleg
Сообщение
11/08/2010 19:14
Копия темы
Обрезка картинок: соотношение сторон Уважаемое сообщество. Требуется помощь зала. Нижеследующая функция создаёт превьюшки изи исходного изображения с соотношением сторон 4х3. Однако, при исходном изображении с другим соотношением сторон оставшееся пространство заливается белым цветом. Что нужно исправить, чтобы обрезало, как показано на картинке? Заранее спасибо. $h = 150; $w = 200; // определим коэффициент сжатия изображения, которое будем генерить $ratio = $w/$h; // создадим пустое изображение по заданным размерам $dest_img = imagecreatetruecolor($w, $h); // зальём его белым цветом imagefill($dest_img, 0, 0, 0xFFFFFF); // получим размеры исходного изображения $size_img = getimagesize($dest_file_name); // получим коэффициент сжатия исходного изображения $src_ratio=$size_img[0]/$size_img[1]; if (($size_img[0]<$w) && ($size_img[1]<$h)) return true; // здесь вычисляем размеры, чтобы при масштабировании сохранились // 1. Пропорции исходного изображения // 2. Исходное изображение полностью помещалось на маленькой копии // (не обрезалось) if ($src_ratio>$ratio) { $old_h=$size_img[1]; $size_img[1]=floor($size_img[0]/$ratio); $old_h=floor($old_h*$h/$size_img[1]); } else { $old_w=$size_img[0]; $size_img[0]=floor($size_img[1]*$ratio); $old_w=floor($old_w*$w/$size_img[0]); } // исходя из того какой тип имеет изображение // выбираем функцию создания switch ($size_img['mime']) { // если тип файла JPEG case 'image/jpeg': // создаем jpeg из файла $src_img = imagecreatefromjpeg($dest_file_name); break; // если тип файла GIF case 'image/gif': // создаем gif из файла $src_img = imagecreatefromgif($dest_file_name); break; // если тип файла PNG case 'image/png': // создаем png из файла $src_img = imagecreatefrompng($dest_file_name); break; } // масштабируем изображение функцией imagecopyresampled() // $dest_img уменьшенная копия // $src_img исходной изображение // $w ширина уменьшенной копии // $h высота уменьшенной копии // $size_img[0] ширина исходного изображения // $size_img[1] высота исходного изображения imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]); imagejpeg($dest_img, "$imgthumbfullname"); // чистим память от созданных изображений imagedestroy($dest_img); imagedestroy($src_img);
umbr
Сообщение
11/08/2010 19:21
Копия темы
0
как-то так... r = w/h; if(r < 1.0) h = w * 3/4; else w = h * 4/3; |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |