我有一张带有alpha通道(即透明度)的PNG图像,我需要创建一个将图像层组合到白色背景上的版本。我想使用可编写命令的CLI工具(例如Image Magick)直接将PNG转换为无损PNG。
以下是一个不起作用的Image Magick命令示例,它会导致错误:
convert input.png -background white -flatten output.png
我有一张带有alpha通道(即透明度)的PNG图像,我需要创建一个将图像层组合到白色背景上的版本。我想使用可编写命令的CLI工具(例如Image Magick)直接将PNG转换为无损PNG。
以下是一个不起作用的Image Magick命令示例,它会导致错误:
convert input.png -background white -flatten output.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
用正确的绿色替换了透明像素。
convert image.png -background green -alpha background -alpha off green.png
或者convert image.png -background green -alpha background -alpha remove green.png
或者convert image.png -background green -flatten green.png
。 - fmw42我看到了这个问题和答案,它们真的帮助了我,但是后来我需要为很多文件做同样的操作。因此,如果你有一个文件夹里有多个PNG图像,并且你想对所有图像进行相同的操作:
find ./ -name "*.png" -exec convert {} -flatten {} \;
尝试了所有的方法,都没有用。只有这个有效:
convert input.png -channel rgba -alpha set \
-fill none -opaque white \
-fill white -opaque black \
-fill white -opaque none \
-alpha off output.png
这将创建一个图像,将带有透明度的第一个放在第二个上面
composite -gravity center ImgWithTransp.png BackgroundSameSizeOfImg.png ResultImg.png
我最初在这篇文章中发现了这个提示。
要从文件中实际删除 alpha 通道,请使用 alpha off 选项:
convert in.png -background white -alpha off out.png
注意,应该使用-alpha off而不是-alpha remove!如果图标中包含Alpha通道,则iOS应用商店上传将失败!!
以下是如何操作: mogrify -alpha off *.png