我有一个带有alpha通道(即透明度)的PNG图像,我需要创建与图像层组合到白色背景的版本。我想使用一个可脚本化的命令,使用一个CLI工具,如Image Magick,直接将PNG无损地转换为PNG。

导致错误的Image Magick命令的一个例子是:

convert input.png -background white -flatten output.png

当前回答

扁平化图像和应用背景图像是直接的ImageMagick

然而,命令的顺序非常重要

要在透明图像上应用任何背景并将其压平,首先应用背景然后将其压平。反过来就不管用了。

$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png

其他回答

下面是如何将一个目录中所有文件夹中的相同图像替换为白色而不是透明的:

Mogrify -background white -flatten */*.png

要真正从文件中删除alpha通道,使用alpha off选项:

convert in.png -background white -alpha off out.png

我需要-alpha background和-flatten,或者-fill。

我制作了一个新的PNG,背景透明,中间有一个红点。

Convert image.png -background green -alpha off green.png失败:它生成了一个黑色背景的图像

Convert image.png -background green -alpha background -flatten green.png生成一个具有正确绿色背景的图像。

当然,对于另一个我重命名为image.png的文件,它什么都没做。对于那个文件,我发现透明像素的颜色是“#d5d5d5”,所以我用绿色填充该颜色:

Convert image.png -fill green -opaque "#d5d5d5" green.png将透明像素替换为正确的绿色。

Welp看起来我决定安装“图形魔法”而不是“图像魔法”有一些粗糙的边缘-当我重新安装真正复杂的旧“图像魔法”时,上面的命令工作得很好。

编辑,很长一段时间后-有一天我会检查看看“图形魔法”是否已经解决了这个问题。

-background white -alpha remove -alpha off

例子:

convert image.png -background white -alpha remove -alpha off white.png

你可以随意用其他颜色替换白色。Imagemagick文档是这样描述-alpha remove操作的:

这个操作简单快捷,不需要就能完成工作 任何额外的内存使用,或其他可能相关的副作用 与替代透明去除技术。这就是 删除图像透明度的首选方式。