Вот метод из класса изображений, который я использую, который вычисляет масштабированные размеры изображения. Это работает, помещая изображение в квадратную коробку.
Вы можете установить $box = 500
, а затем передать $x
и $y
изображения, которое вы пытаетесь изменить, и оно всегда вернет правильные размеры с сохранением соотношения сторон.
public static function fit_box($box = 200, $x = 100, $y = 100)
{
$scale = min($box / $x, $box / $y, 1);
return array(round($x * $scale, 0), round($y * $scale, 0));
}