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

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

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

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

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

我都试过了

  1. convert 'orig_image.jpg' -resize 640x360 -gravity Center -crop 640x360+0+0 'changed_image.jpg'
  2. 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 调用),以及现在正在发生的事情(包括说明问题的图像)
  • 还是不行。我编辑了问题。
  • 你能添加原始图像和你现在得到的结果吗? (理想的结果之一)

标签: imagemagick


【解决方案1】:

也许你可以使用这个:

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

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

【讨论】: