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

Я пытаюсь изменить размер изображения до ширины 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);

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

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


person Jenz    schedule 23.10.2014    source источник


Ответы (1)


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

list($w, $h) = getimagesize($target_dir);    
$width = 500;
$ratio = $w / $h;
$height = $width / $ratio;
person danmullen    schedule 23.10.2014