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

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

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

当前回答

我看到了这个问题和答案,这真的帮助了我,但后来我需要为很多文件这样做,所以如果你有多个图像(PNG图像)在一个文件夹,你想为所有:

find ./ -name "*.png" -exec convert {} -flatten {} \;

其他回答

-background white -alpha remove -alpha off

例子:

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

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

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

这就创建了一个图像,只是将第一个透明的图像放在第二个上面

composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png

最初是在这个帖子上发现的提示

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

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

这是我的工作:

magick convert OLD.png -background white -alpha remove NEW.png

下面是一个带有透明背景的初始图像,以防它有助于测试:

此外,对于PC上的一次性,你可以在Windows Paint中打开PNG文件,然后单击保存。这将自动将透明变成不透明的白色。

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

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

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

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