我正在尝试使用ImageMagick调整图像的大小,以使其保持当前的宽高比,并适配到一个4:3的容器中。
以下是我目前拥有的命令:
magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg
这是我想要的:
![马](https://i.gyazo.com/2581a7817a2b80bb909945f407e95c9d.png)
我正在尝试使用ImageMagick调整图像的大小,以使其保持当前的宽高比,并适配到一个4:3的容器中。
以下是我目前拥有的命令:
magick convert ./horse.jpeg -background white -gravity center -extent 4/3 ./hourse_output.jpeg
我犯了错误。ImageMagick中的纵横比,例如4:3 -extent只会进行裁剪而不是填充。
请访问我的bash unix脚本“aspectpad”,网址为:http://www.fmwconcepts.com/imagemagick/index.html,它可以做到你想要的。
不过,以下是一个部分解决方案,仅适用于横向模式的输入,并且仅适用于使用内联参数的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),则会在顶部/底部填充。如果输入的横向比小于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
mogrify 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
失败了,错误提示为:mogrify-im6.q16: invalid argument for option
%[wd]x%[ht]': -extent @ error/mogrify.c/MogrifyImageCommand/4819.`。 - Ciro Santilli OurBigBook.commagick mogrify
命令。我建议您使用IM 7的magick命令,而不是magick mogrify。 - fmw42如果您知道图片是横向的,并且图像的宽高比大于4:3,那么这里有另一种使用ImageMagick的方法。只需在顶部和底部填充足够的空间,然后使用“-extent 4:3”进行裁剪。这样就不需要进行任何计算,因此它应该可以在ImageMagick 6或7中工作。如果是ImageMagick 6,请将magick更改为convert。(如果w/h小于4/3,则填充左侧和右侧。)
输入:
magick barn_2to1.jpg -gravity center -bordercolor black -border 0x100 -background black -extent 4:3 result3.jpg