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

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

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

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

我已经知道如何缩小尺寸并保持宽高比;我已经有了应用合成的命令。我唯一缺少的是将非正方形图像方形化(用透明度填充)。

优先使用单一命令;可以接受多命令链。

(编辑)

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

gm composite -compose copyopacity mask.png source-and-target.png source-and-target.png

其中 mask.png 有白色像素,代表我想保留的 source-and-target.png,还有透明像素,代表我想删除(并变为透明)的 source-and-target.png。

答案1

此命令将接受任意大小的输入文件,并将其最适合于 40x40 的正方形并用透明度填充:

convert \
   original.png \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
  -compose Copy_Opacity \
  -composite mask.png \
   original-resized.png

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

答案2

一个命令即可转换一个文件夹中的所有 PNG:

mogrify \
 -resize 50x50 \
 -background transparent \
 -gravity center \
 -extent 50x50 \
 -format png \
 -path resized \
 *.png

莫格里菲是 ImageMagick 包中的一个命令。您必须先创建输出目录。

答案3

这是我最终选择的方法。分为两个步骤:

gm convert \
  -thumbnail '40x40>' \
  -background transparent \
  -gravity center \
  -extent 40x40 \
   original.png \
   intermediate.png

gm composite \
  -compose in \
   intermediate.png \
   mask.png \
   out.png

其中 mask.png 是白色像素,代表我想要保留的内容,透明像素代表我想要屏蔽(丢弃)的内容。

相关内容