在不裁剪图像的情况下,在 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 可能有更简单的方法。
我有这张图片,是从 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 可能有更简单的方法。