Нахождение высоты изображения по заданной ширине с сохранением пропорциональности в переполнении стека

Я пытаюсь изменить размер изображения до ширины 500 пикселей. Я хочу сохранить соотношение сторон изображения.

Мое оригинальное изображение

введите описание изображения здесь

Когда я изменил размер до ширины 500, введите описание изображения здесь

Я делаю следующий код для изменения размера изображения.

$target_dir="uploads/reference/".$data['CP_Image'];
move_uploaded_file($tmp_file, $target_dir);
list($w, $h) = getimagesize($target_dir);
$width=500;
$ratio = $width / $h;
$x = ($w - $width / $ratio) / 2;
$height = 500 / $ratio;exit;

$path = "uploads/reference/".$data['CP_Image'];
$thumb = imagecreatetruecolor($width, $height);
$source = imagecreatefromjpeg($target_dir);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $w, $h);

// Output and free memory
imagejpeg($thumb,$path);
imagedestroy($thumb);

С этим кодом ширина изменяется до 500px, но высота не пропорциональна. Что я делаю не так? Может кто-нибудь помочь мне это исправить?

заранее спасибо

0

Решение

Вы рассчитываете соотношение неправильно. Вместо того, чтобы делить новую ширину на исходную высоту, вы хотите что-то вроде этого:

list($w, $h) = getimagesize($target_dir);
$width = 500;
$ratio = $w / $h;
$height = $width / $ratio;
2

Другие решения

Других решений пока нет …