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

Posted

技术标签:

【中文标题】使用 ImageMagick 调整大小,然后从命令行裁剪图像【英文标题】:Use ImageMagick to resize and then crop an image from command line 【发布时间】:2015-12-23 12:38:45 【问题描述】:

我有一个 jpg 图像,我想调整如下:

    保持图像的纵横比不变,将其调整为尽可能接近 640x360,而不会使新图像的任何部分保持“空白”/“空”。也就是调整大小后变成800x360或者640x420可以,但是400x360(因为400小于640)或者640x200(因为200小于360)就不行了。

    之后,我需要将上面调整大小的图像居中裁剪为 16:9 的比例。

可以使用 imagemagick 实现这一目标的最简单的 shell 命令集是什么?

我都试过了

    convert 'orig_image.jpg' -resize 640x360 -gravity Center -crop 640x360+0+0 'changed_image.jpg'convert 'orig_image.jpg' -resize 640x360 -gravity Center -crop 640x360+0+0 +repage 'changed_image.jpg'

但没有一个有效。 -resize 640x360 正在调整图像大小,但没有满足我的上述要求。也就是说,2448x3264 正在调整大小为 270x360 而不是 640x480

【问题讨论】:

这只是懒惰。您可以自己轻松查找:ImageMagick 有一个很棒的文档。请参阅“调整大小和缩放示例”imagemagick.org/Usage/resize 和“剪切和边界示例”imagemagick.org/Usage/crop 我已经读过了。我读后明白的是,我需要做convert 'orig_image.jpg' -resize 640x360 -gravity Center -crop 640x360+0+0 'changed_image.jpg'。但它不起作用。它只是进行调整大小,而不是在那之后应该对调整大小的图像进行的裁剪。如果您对此有帮助,请回复。 嗯。 +repage 有帮助吗? convert 'orig_image.jpg' -resize 640x360 -gravity Center -crop 640x360+0+0 +repage 'changed_image.jpg'。如果没有,为什么不编辑问题以显示您现在正在做什么(convert 调用),以及现在正在发生的事情(包括说明问题的图像) 还是不行。我编辑了问题。 你能添加原始图像和你现在得到的结果吗? (理想的结果之一) 【参考方案1】:

也许你可以使用这个:

convert orig.jpg \
        -resize 640x360^ \
        -gravity Center \
        -extent 640x360
        changed.jpg

-resize 64x360^ 保留最小纵横比,-extent 640x360(没有+0+0)尊重-gravity Center

【讨论】:

以上是关于使用 ImageMagick 调整大小,然后从命令行裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 imagemagick 将垫调整大小的蒙版应用于裁剪调整大小的图像

在命令行中快速调整图像大小(需要ImageMagick)

使用具有最大宽度/高度的 ImageMagick 调整大小

调整 GIF 动画、pil/imagemagick、python 的大小

Rails Carrierwave和Imagemagick,使用条件调整图像大小

ImageMagick:转换、裁剪、调整大图像