使用ubuntu上的转换使用填充调整图像大小

Sha*_*han 15 linux image imagemagick image-resizing

我正在使用convert命令来调整图像大小

有两个版本

以下是第一个,结果图像保持纵横比,但图像不一定是大小 nxn

 convert temp.jpg -resize nxn temp.jpg
Run Code Online (Sandbox Code Playgroud)

第二个版本

 convert temp.jpg -resize nxn! temp.jpg
Run Code Online (Sandbox Code Playgroud)

它不保留纵横比.

我想要的是保留纵横比,并用所需的RGB值填充图像的其余部分以实现尺寸 nxn

有任何想法吗?

谢谢

Mar*_*ell 30

您需要使用-extent在调整大小后直接设置画布的大小,并且新创建的区域将填充您设置的任何内容-background.

因此,如果您希望填充为洋红色,请执行以下操作:

convert image.png -resize 100x100 -background "rgb(255,0,255)" -extent 100x100 out.png
Run Code Online (Sandbox Code Playgroud)

如果您希望图像显示在输出图像的"中间",并且填充边均匀分布在两侧,请按以下方式添加-gravity center:

convert image.png -resize 100x100 -gravity center -background "rgb(255,0,255)" -extent 100x100 out.png
Run Code Online (Sandbox Code Playgroud)

因此,如果我们从一个宽的蓝色图像开始,即300x100,并且无法在正方形中正确拟合,如下所示:

在此输入图像描述

我们用这个调整大小:

convert image.png -resize 100x100 -gravity center -background "rgb(255,0,255)" -extent 100x100 out.png
Run Code Online (Sandbox Code Playgroud)

我们会得到这个

在此输入图像描述