PHP: Изменение размера изображения
Преимущество данного скрипта в том, что он учитывает пропорцию исходного изображения. Картинки не искажаются при любых исходных и конечных размерах и размер изображения в итоге получается строго в заданных $w и $h.
$w=160; //новая ширина
$h=120; //новая высота
$i='1.jpg';
$i='images/'.$i; //путь к изображению
$left=0; //задаём смещение слева
$top=0; //задаём смещение сверху
$size = getimagesize($i); // получаем информацию о исходном изображении
$sw=$size['0']; //исходная ширина
$sh=$size['1']; //исходная высота
$k1=$sw/$w; //коэффициент отношения ширины
$k2=$sh/$h; //коэффициент отношения высоты
$e=$w/$h; //коэффициент отношения новой ширины и высоты
$se=$sw/$sh; //коэффициент отношения исходной ширины и высоты
$m=$se/$e; //поправочный коэффициент
if($w>=$h) {
$sh=$h*$k1;
if($e<$se) {
$sw=$sw/$m;
$sh=$sh/$m;
$left=($size['0']-$sw)/2;
}
$top=($size['1']-$sh)/2;
} else {
$sw=$w*$k2;
if($e>$se) {
$sw=$sw*$m;
$sh=$sh*$m;
$top=($size['1']-$sh)/2;
}
$left=($size['0']-$sw)/2;
}
$image = imagecreatetruecolor($w,$h); //создаём пустое новое изображение
$s = imagecreatefromjpeg($i); //считываем изображение из jpeg файла
imagecopyresampled ($image, $s, 0, 0, $left, $top, $w, $h, $sw, $sh); //изменяем размер изображения
header("Content-type: image/png");
imagepng($image);//выводим новое изображение в формате png
imagedestroy($image); //освобождаем память
imagedestroy($s); //освобождаем память