如何使用 ImageMagick (GraphicsMagick) 更改 PNG 的画布大小?(如何填充透明度?)

Pis*_*tos 9 graphics imagemagick images graphicsmagick

或者:如何使用非方形 PNG 并用透明度“填充”图像的“其余部分”,以便生成的方形图像将原始图像置于正方形的中心?

最终,我想要的是拍摄任何尺寸的任何 GM 支持格式的任何图像,并创建一个缩小的 PNG(例如,任一尺寸最大 40 像素),保持纵横比,为非方形填充透明度原始图像,并应用了已经准备好的 40x40 PNG 透明蒙版。

我已经知道如何缩小并保持纵横比;我已经有了应用我的复合材料的命令。我唯一缺少的部分是方形化非方形图像(用透明度填充)。

首选单命令;多命令链可接受。

(编辑)

额外信息:这是我正在使用的复合命令:

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png
Run Code Online (Sandbox Code Playgroud)

其中 mask.png 有我想要保留的 source-and-target.png 的白色像素和我想要删除(并变得透明)的 source-and-target.png 的透明像素。

Pau*_*aul 7

此命令将采用任何大小的输入文件,并将其最适合 40x40 的正方形和具有透明度的填充:

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png
Run Code Online (Sandbox Code Playgroud)

gravity选项确保图像在两个方向都居中,并transparent在没有像素的地方使用。然后合成完成mask.png


小智 6

从一个文件夹转换所有 PNG 的一个命令:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png
Run Code Online (Sandbox Code Playgroud)

mogrify是来自 ImageMagick 包的命令。您必须先创建输出目录。