Справочники, инструменты, документация

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); //освобождаем память