ImageMagick 缩放和裁剪保持纵横比

Posted

技术标签:

【中文标题】ImageMagick 缩放和裁剪保持纵横比【英文标题】:ImageMagick scale and crop keeping aspect ratio 【发布时间】:2017-09-27 22:29:39 【问题描述】:

我尝试使用 ImageMagick 将图像缩放到 250 像素宽度并保持纵横比,然后以 160 像素宽度和 160 像素高度从顶角 (x,y) 裁剪它,但没有成功。

我已经用 php 尝试过,但它不起作用:

exec($homePath.'/ImageMagick/bin/mogrify -resize 250x -crop 160x160'+'.$x.'+'.$y
     .' test.jpg');

我什至尝试过如下 2 条指令:

//Resize is not working
exec($homePath.'/ImageMagick/bin/mogrify -resize 250x test.jpg');

//Crop is working
exec($homePath.'/ImageMagick/bin/mogrify -crop 160x160'.'+'.$x.'+'.$y.' test.jpg');

我正在使用 ImageMagick 7.0.7-4

【问题讨论】:

不工作是什么意思?你能把mogrify改成convert看看结果吗? 在 Imagemagick 7 中,convert 是 magick,mogrify 是 magick mogrify。如果您一次只处理一张图像,我建议您使用 magick 代替 mogrify。同样在裁剪后,如果您要保存为保存虚拟画布的文件格式(例如 PNG 或 TIF),则需要添加 +repage。没有它的JPG很好。试试exec($homePath.'/ImageMagick/bin/magick mogrify -resize 250x -crop 160x160'+'.$x.'+'.$y.' test.jpg'); 另外,您的报价似乎可能不正确。我不是 PHP exec 方面的专家,但请尝试 exec("$homePath.'/ImageMagick/bin/magick mogrify -resize 250x -crop 160x160+'.$x.'+'.$y.' test.jpg'") ; 它仍然没有调整图像大小,即使使用 magick mogrifymagick convert。当我只用exec($homePath.'/ImageMagick/bin/mogrify -crop 160x160'.'+'.$x.'+'.$y.' test.jpg'); 测试裁剪时,图像被裁剪。我不明白为什么调整大小不起作用。 【参考方案1】:

最后在 @fmw42 的帮助下,他将我的注意力集中在 ImageMagick 7mogrify 之前的术语 ma​​gick

 exec($homePath.'/ImageMagick/bin/magick mogrify -scale 250x 
      -crop 160x160+'.$x.'+'.$y.' test.jpg');

谢谢。

【讨论】:

是否安装了 libpng 委托库?你可以检查magick -version,看看它是否列出了 png。如果 -scale 可以,则 -resize 没有理由不工作。这取决于你想要的结果。 -scale 会更快,但结果会更模糊。 @fmw42 我终于安装了另一个 ImageMagick 包,一切正常。感谢您的帮助。

以上是关于ImageMagick 缩放和裁剪保持纵横比的主要内容,如果未能解决你的问题,请参考以下文章

使用 Imagemagick 将大图像裁剪为特定的纵横比,然后调整它们的大小

Dragonfly/imagemagick 调整大小和裁剪,并可能添加白色填充

使用纵横比和空白区域裁剪图像

使用 ImageMagick 调整大小,然后从命令行裁剪图像

使用 PHP 缩放图像并保持纵横比

如何使用 Cordova/Ionic 将图像裁剪为特定纵横比?