PHP Imagick:如何在不扩展的情况下调整大小?

时间:2015-05-29 05:00:34

标签: php imagemagick imagick

我使用PHP Imagick来操作图像。

我有两个用例:" resize" " crop"。

在"调整大小"中,如果原始图片的尺寸小于给定的宽度和高度,我不希望 Imagick将其缩放,而是希望它只是返回原始大小。

然而,正如PHP文档所说,Imagick的行为已从版本3(我使用版本6+)更改为它将始终扩展图像。

  

注意:参数bestfit的行为在Imagick 3.0.0中已更改。   在此版本之前给出尺寸为400x400的尺寸图像   200x150将保持不变。在Imagick 3.0.0及更高版本中的图像   将扩大到400x300,因为这是最适合的#34;为了   给定尺寸。如果使用bestfit参数宽度和高度   必须给予。

因此,在我的情况下,对于给定尺寸400x400,尺寸为200x150的图像应返回200x150而不是400x300的图像。对于给定尺寸100x100,尺寸为200x150的图像应返回100x75的图像(应该按比例缩小)。

我试了一下thumbnailImage(),resizeImage()和scaleImage()没有任何运气。 如果我将bestfit设置为false,则会进行裁剪,这不是我想要的调整大小。

有没有办法让Imagick完成这项工作?

2 个答案:

答案 0 :(得分:4)

尝试这样做:

$max_width  = 1200;
$max_height = 800;
$im = new Imagick($path_to_image);
$im->resizeImage(
    min($im->getImageWidth(),  $max_width),
    min($im->getImageHeight(), $max_height),
    imagick::FILTER_CATROM,
    1,
    true
);

答案 1 :(得分:0)

使用此命令:

convert input.img -resize 400x400\> output.img

请注意使用附加的\>修饰符给出所需维度的具体方法:它告诉转换过程仅调整大于大于400x400像素的图像。较小的图像不会被触摸。