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 mogrify 或 magick convert。当我只用exec($homePath.'/ImageMagick/bin/mogrify -crop 160x160'.'+'.$x.'+'.$y.' test.jpg');
测试裁剪时,图像被裁剪。我不明白为什么调整大小不起作用。
【参考方案1】:
最后在 @fmw42 的帮助下,他将我的注意力集中在 ImageMagick 7 中 mogrify 之前的术语 magick:
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 调整大小和裁剪,并可能添加白色填充