Расчет размеров изображения при изменении размера (php + imagemagick) - PullRequest
0 голосов
/ 08 апреля 2011
$size1 = 170;
$size2 = 128;


if($width > $height){

exec("convert ".$startfile." -resize x".$size2." -quality 100 ".$resultfile);

} else {

exec("convert ".$startfile." -resize ".$size1." -quality 100 ".$resultfile);
}

exec("convert ".$resultfile." -gravity Center -crop ".$size1."x".$size2."+0+0 ".$resultfile);

Нужна помощь в изменении размера изображения 170x128 px.Приведенная выше функция работает нормально, но есть одна проблема.Как вы можете видеть, если ширина изображения больше высоты, сценарий сначала делает изображение высотой 128 пикселей.Проблема возникает, когда есть небольшая разница между шириной и высотой.

Например, если размеры изображения 387x310 px, сценарий будет использовать оператор if ($ width> $ height) исделает изображение высотой 128px.Проблема в том, что при этом ширина изображения будет изменена до 160 пикселей.Но мне нужно 170 пикселей ширины после изменения размера.

Мне нужно знать, какой будет ширина изображения после изменения размера до 128 пикселей.Мне нужно что-то вроде этого:

if($width > $height && $width_after_resizing > 127) {
} else {
}

Есть ли способ, как рассчитать размеры изображения перед обрезкой?Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 апреля 2011

Проверка $ width против $ height предполагает, что цель будет квадратной.Что делать, если вы измените:

if($width > $height){

на

if($width/$size1 > $height/$size2){
0 голосов
/ 15 апреля 2011

Вы хотите повернуть соотношение сторон, чтобы получить точно указанный размер.

Добавьте '!'к аргументу -resize.

Для получения более подробной информации об imagemagick fo для форумов IM http://www.imagemagick.org/discourse-server/viewforum.php?f=1

0 голосов
/ 08 апреля 2011

если у вас включен gd, вы можете использовать getimagesize http://php.net/manual/en/function.getimagesize.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...