imagemagick将大小调整为精确大小

imagemagick将大小调整为精确大小,imagemagick,image-resizing,Imagemagick,Image Resizing,问题更多的是“技术诀窍”。我有一组大小完全不同的图片:一个是360x360,另一个是1200x800。我想为一个精确大小的网页制作缩略图,例如150x150。由于大小不同,我不能只使用转换-调整大小或以某种方式进行裁剪,两者都需要。 如何解决此问题?您需要一个函数,该函数将根据源图像的宽度和高度以及最大缩略图宽度和高度计算缩略图大小: function setWidthHeight($srcWidth, $srcHeight, $maxWidth, $maxHeight){ $ret

问题更多的是“技术诀窍”。我有一组大小完全不同的图片:一个是360x360,另一个是1200x800。我想为一个精确大小的网页制作缩略图,例如150x150。由于大小不同,我不能只使用转换-调整大小或以某种方式进行裁剪,两者都需要。
如何解决此问题?

您需要一个函数,该函数将根据源图像的宽度和高度以及最大缩略图宽度和高度计算缩略图大小:

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)中您喜欢的缩略图生成过程