imagecopyresampled Изменить размер до максимальной ширины ИЛИ высоты, но сохранить соотношение - PullRequest
1 голос
/ 12 января 2012

У меня есть следующий код, который я использую для изменения размера некоторых изображений на моем сервере до меньшего размера:

// get the ratio of the original image
list($orgwidth, $orgheight) = getimagesize($originalImageDir);
// create a thumb and source image to be resized
$thumb = imagecreatetruecolor($width, $height);
$source = imagecreatefromjpeg($originalImageDir);
// resize
imagecopyresampled($thumb, $source, 0, 0, 0, 0, round($height / $ratio), $height, $orgwidth, $thumbheight);
// save new thumb with quality 75
imagejpeg($thumb, $path, 75);

Я столкнулся со следующей проблемой: я назначил своей функции высоту и ширину 300 и 200 соответственно. Теперь исходные изображения не имеют такого соотношения, поэтому я хотел бы иметь возможность изменить размер оригинала до максимальной ширины 200 или максимальной высоты 300; какой бы из них ни был большим значением.

Так, например, если у меня есть изображение размером 1200х1000 Вт, я хочу изменить его размер до высоты 240px и 200px, потому что в этом случае 200px была моей максимально допустимой шириной. И если бы у меня было изображение размером 480 х 300 Вт, мое новое изображение было бы изменено до высоты 300 пикселей и ширины 187 пикселей, потому что 300 пикселей - это моя максимальная высота, и это приводит меня к максимально допустимой ширине.

Надеюсь, у меня есть смысл. В любом случае, если кто-нибудь из php и математических мастеров что-то приготовил, пожалуйста, поделитесь:)

Спасибо!

1 Ответ

1 голос
/ 12 января 2012

почему бы не взглянуть на что-то вроде http://pear.php.net/package/Image_Transform/, которое имеет различные драйверы для разных библиотек изображений и обладает именно той функциональностью, которую вы ищете?

...