我使用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完成这项工作?
答案 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像素的图像。较小的图像不会被触摸。