在不裁剪图像的情况下,在 imagemagick 中将图像尺寸更改为 4:3

Change image dimensions to 4:3 in imagemagick without cropping the image

我有这张图片,是从 API 电话中获得的:

在客户的网站上,一切都设置为使用4:3格式的图片。

现在我尝试了很多方法来将图像的尺寸更改为 4:3,但它总是裁剪图像,这不是我们想要的结果。

此代码:

"convert /original-file.jpg -background white -gravity center -extent 4:3 jpg:new-file.jpg";

生成这张图片:

但我想要这个结果:

如果您知道所需的像素大小,那么 -rezise, -extent` 链应该可以工作:

$ convert input.png -fuzz 3% -trim -resize 400x300 -gravity center -extent 400x300 output.jpg
#                   ^         ^    ^               ^               ^
#                   |         |    |               |               Extent canvas to actually be the wanted size
#                   |         |    |               How the image should be placed when the canvas is extended
#                   |         |    Resize image to preferred size
#                   |         Remove black border
#                   Fuzz for which colors to remove, can be omitted if the image's border is the exact same color all over

使用 ImageMagick v6,此命令行将获取任何输入图像并将其 canvas 扩展为 4:3 方面,输入图像居中。任何添加的背景区域都将为白色。

convert image.png -background white ^
   -set page "%[fx:(w/h)<(4/3)?w*(4/3)/(w/h):w]x%[fx:(4/3)<(w/h)?h*(w/h)/(4/3):h]" ^
   -set page "+%[fx:(page.width-w)/2]+%[fx:(page.height-h)/2]" -flatten out.png

该命令采用 Windows 语法。要在 *nix 系统上 运行 它,您必须将续行插入符“^”更改为反斜杠“\”。

使用 IMv7 可能有更简单的方法。