imagemagick изменить размер до точного размера - PullRequest
1 голос
/ 12 февраля 2012

Это вопрос больше о "ноу-хау".У меня есть куча изображений совершенно разных размеров: одно может быть 360x360, а другое 1200x800.И я бы сделал эскизы для веб-страницы точного размера, например 150x150.Из-за разных размеров я не могу просто использовать команду convert -resize или просто обрезать ее, мне нужны оба варианта.Как бы вы решили это?

1 Ответ

0 голосов
/ 12 февраля 2012

Вам нужна функция, которая будет рассчитывать размеры миниатюр на основе ширины и высоты исходного изображения, а также максимальной ширины и высоты миниатюр:

function setWidthHeight($srcWidth, $srcHeight, $maxWidth, $maxHeight){

    $ret = array($srcWidth, $srcHeight);

    $ratio = $srcWidth / $srcHeight;

    if($srcWidth > $maxWidth || $srcHeight > $maxHeight){

        $ret[0] = $maxWidth;
        $ret[1] = $ret[0] / $ratio;

        if($ret[1] > $maxHeight){
            $ret[1]  = $maxHeight;
            $ret[0] = $maxHeight * $ratio;
        }
    }    

    $ret[0] = intval(ceil($ret[0]));
    $ret[1] = intval(ceil($ret[1]));   

    return $ret;
}

Затем вы можете использовать любую процедуру генерации уменьшенного изображения, которая вам нравится, imagecopyresampled (...) или $ imageMagick-> thumbnailImage ($ newWidth, $ newHeight);

...