如何在 imagemagick 中调整图像大小但保持纵横比不变

How to resize an image in imagemagick but keep an aspect ratio constant

我正在尝试调整图像大小(使用 imagemagick)以保持其当前纵横比,但使其适合 4/3 容器。

这是我目前的命令:

magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg

这就是我想要的:。如您所见,图像是 "put into" 一个 4/3 容器。

使用 4:3 而不是 4/3。但是您没有指定任何 -resize。在 ImageMagick 7 中,只使用 magick,不使用 magick convert 和 not convert。对于其他工具,请使用 magick identify、magick mogrify 等。但不适用于 convert。请参阅 imagemagick。org/script/command-line-processing。php#geometry 以了解 4:3 问题。

我的错误。 ImageMagick -extent 中的 4:3 等宽高比只会裁剪而不会填充。

http://www.fmwconcepts.com/imagemagick/index.html 上查看我的 bash unix 脚本 "aspectpad",我认为它可以满足您的需求。

尽管如此,这里还是提供了部分解决方案。但这仅适用于横向模式输入。由于对 -extent 使用了内联参数,因此也仅适用于 ImageMagick 7。您必须将其修改为纵向模式。

输入(方面2:1 = 2/1 = 2):

magick barn_2to1.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result.jpg


输出(方面4:3 = 4/3 = 1.33):

请注意,我使用了黑色背景,以便在这里可以看到它。更改为您想要的任何其他颜色。

如果输入的横向纵横比大于4:3(4/3),它将在top/bottom上填充。如果输入的横向纵横比小于 4:3,它将在 left/right 上填充。

输入(宽高比=1:1 = 1/1 = 1):

magick lena.jpg -set option:wd "%[fx:(4/3)>(w/h)?(4/3*h):w]" -set option:ht "%[fx:(4/3)>(w/h)?h:(w/(4/3))]" -gravity center -background black -extent "%[wd]x%[ht]" result2.jpg


这是在 ImageMagick 中执行此操作的另一种方法,如果您知道图片处于横向模式并且图像 w/h 纵横比大于 4/3。只需在顶部和底部填充足够的空间,然后使用 -extent 4:3 对其进行裁剪。这样就不需要计算,所以它应该在 ImageMagick 6 或 7 中工作。如果是 ImageMagick 6,请更改 magick 以进行转换。 (如果w/h小于4/3横屏,则左右填充。)

输入:

magick barn_2to1.jpg -gravity center -bordercolor black -border 0x100 -background black -extent 4:3 result3.jpg