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

时间:2019-06-19 17:11:52

标签: imagemagick-convert

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

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

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

这就是我想要的:horse。如您所见,图像被“放入”一个4/3容器。

3 个答案:

答案 0 :(得分:1)

我的错误。诸如ImageMagick -extent中的4:3之类的纵横比只会裁切而不会填充。

请参阅http://www.fmwconcepts.com/imagemagick/index.html上我的bash Unix脚本“ aspectpad”,它符合您的想法。

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

输入(纵横比2:1 = 2/1 = 2):

enter image description here

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):

enter image description here

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

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

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

enter image description here

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


enter image description here

答案 1 :(得分:0)

使用4:3而不是4/3。但是您尚未指定任何-resize。在ImageMagick 7中,仅使用magick,而不使用magick convert和not convert。对于其他工具,请使用magick标识,magick迁移等,但不要用于convert。有关4:3问题,请参见imagemagick.org/script/command-line-processing.php#geometry。

答案 2 :(得分:0)

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

输入:

enter image description here

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


enter image description here