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


9

或者:如何获取非正方形的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像素。

Answers:


7

此命令将采用任何大小的输入文件,并最适合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


因此,我们不能一次完成composite
Pistos 2012年

@Pistos我不清楚您对合成的处理方式-只是一个透明蒙版,用于在调整大小后隐藏/显示缩略图的某些部分?您是否可以编辑和添加到目前为止的命令序列,以便我们可以查看它是否可以组合?
保罗

@Pistos我认为最好的方法是使用-convert进行合成,而不是相反。我已经在上面更新了我的答案。
保罗

接近,但不完全是。您的命令无法按原样运行,即使进行了调整,也无法正常运行。没关系,我分两个步骤进行。在完成最后的可运行CLI步骤后,我将在此处进行更新。再次感谢。
Pistos

我会-filter Catrom在该thumbnail选项之前添加,因为根据我的经验,它通常会产生更高质量的图像。
thdoan

6

一个命令,用于从一个文件夹转换所有PNG:

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

mogrify是ImageMagick软件包中的命令。您必须首先创建输出目录。


好一个。顺便说一句,如果您喜欢冒险,可以省略-path resized就地编辑文件。
aaronk6 '16

这很棒。在我的安装(OSX,1.3.35),它的gm mogrify代替和-path resized,使用-create-directories -output-directory resized
布雷克

1

这就是我最终所追求的。两步过程:

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是我要保留的白色像素,而我要遮蔽的透明像素(丢弃)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.