Если вы хотите, чтобы небольшая функция для удобного изменения размеров ваших фотографий соответствовала тому, что показано ниже. если указан только $ size1, размер изображения будет изменен с использованием этого значения в качестве наибольшего размера, в противном случае, если указан размер $ size2, размер изображения будет пропорционально изменен с использованием $ size1 в качестве наибольшего размера, а затем остальное будет обрезано. Может сделать это проще, чем ваш ($ width <= 0 || $ width> 170 || $ height <= 0 || $ height> 200):
function resizeImg($name, $extension, $size1, $size2) {
if (preg_match('/jpg|jpeg/',$extension)){
$image = imagecreatefromjpeg($name);
}
if (preg_match('/gif/',$extension)){
$image = imagecreatefromgif($name);
}
$old_width = imageSX($image);
$old_height = imageSY($image);
$old_aspect_ratio = $old_width/$old_height;
if($size2 == 0){
$new_aspect_ratio = $old_aspect_ratio;
if($old_width > $old_height){
$new_width = $size1;
$new_height = $new_width / $old_aspect_ratio;
} else {
$new_height = $size1;
$new_width = $new_height * $old_aspect_ratio;
}
} elseif($size2 > 0){
$new_aspect_ratio = $size1/$size2;
//for landscape potographs
if($old_aspect_ratio >= $new_aspect_ratio) {
$new_width = $size1;
$new_height = $size2;
$x1 = round(($old_width - ($old_width * ($new_aspect_ratio/$old_aspect_ratio)))/2);
$old_width = round($old_width * ($new_aspect_ratio/$old_aspect_ratio));
$y1 = 0;
//for portrait photographs
} else{
$new_width = $size1;
$new_height = $size2;
$x1 = 0;
$y1 = round(($old_height/2) - ($new_height/2));
$old_height = round($old_width/$new_aspect_ratio);
}
}
$new_image = imagecreatetruecolor($new_width, $new_height);
imagecopyresized($new_image, $image, 0, 0, $x1, $y1, $new_width, $new_height, $old_width, $old_height);
return $new_image;
}