Вот было откуда-то... Писал не я если что, и не проверял, но вроде бы работало когда-то...
//параметры: файлСюда, файлТуда, ширина, высота, качество в %
//короче разберетесь сами, да и допилить/перепелить надо бы
//а лучше новую написать
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i) {
echo 'Невозможно получить размер';
return;
}
$types = array('gif','jpg','jpeg','png');
if (in_array($type,$types)) {
$func = 'imagecreatefrom'.$type;
$img = $func($file_input);
} else {
echo 'Некорректный формат файла';
return;
}
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
if ($type == 2) {
return imagejpeg($img_o,$file_output, $percent);
} else {
$func = 'image'.$type;
return $func($img_o,$file_output);
}
}