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

Som*_*Guy 6 imagemagick imagemagick-convert

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

这是我到目前为止的命令:

magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:马。正如您所看到的,图像被“放入”4/3 容器中。

fmw*_*w42 5

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

请参阅我的 bash unix 脚本“aspectpad”,网址为http://www.fmwconcepts.com/imagemagick/index.html,我认为它可以满足您的需求。

尽管如此,这里还是如何做到这一点的部分解决方案。但这仅适用于横向模式输入。由于使用了 -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
Run Code Online (Sandbox Code Playgroud)


输出(长宽比 4:3 = 4/3 = 1.33):

在此输入图像描述

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

如果输入横向宽高比大于 4:3 (4/3),它将填充在顶部/底部。如果输入横向宽高比小于 4:3,它将向左/右填充。

输入(长宽比=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
Run Code Online (Sandbox Code Playgroud)


在此输入图像描述