Функция ресайза изображений с нужными нам параметрами (размерами)
/**
* @param string $target путь к оригинальному файлу
* @param string $dest путь сохранения обработанного файла
* @param string $wmax максимальная ширина
* @param string $hmax максимальная высота
* @param string $ext расширение файла
*/
public static function resize($target, $dest, $wmax, $hmax, $ext){
// Приведение к нужным размерам (что именно отсекаем у исходника, если пропорции не совпадают)
// Узнать размеры оригинала
list($w_orig, $h_orig) = getimagesize($target);
// Сейчас будем выяснять что конкретно надо отрезать...
$temp_width = $h_orig / $hmax * $wmax;
$temp_height = $w_orig / $wmax * $hmax;
// Это будет или ширина,
if ($temp_width <= $w_orig) {
$myWidth = $temp_width;
$myHeight = $h_orig;
}
// Или высота
if ($temp_height <= $h_orig) {
$myWidth = $w_orig;
$myHeight = $temp_height;
}
$img = "";
// imagecreatefromjpeg | imagecreatefromgif | imagecreatefrompng
switch($ext){
case("gif"):
$img = imagecreatefromgif($target);
break;
case("png"):
$img = imagecreatefrompng($target);
break;
default:
$img = imagecreatefromjpeg($target);
}
$newImg = imagecreatetruecolor($wmax, $hmax); // создаем оболочку для новой картинки
if($ext == "png"){
imagesavealpha($newImg, true); // сохранение альфа канала
$transPng = imagecolorallocatealpha($newImg,0,0,0,127); // добавляем прозрачность
imagefill($newImg, 0, 0, $transPng); // заливка
}
imagecopyresampled($newImg, $img, 0, 0, 0, 0, $wmax, $hmax, $myWidth, $myHeight); // копируем и ресайзим изображение
switch($ext){
case("gif"):
imagegif($newImg, $dest);
break;
case("png"):
imagepng($newImg, $dest);
break;
default:
imagejpeg($newImg, $dest);
}
// Всё, избавляемся от мусора....
imagedestroy($newImg);
imagedestroy($img);
}