Imagemagick:去除alpha通道(将所有中间的alpha像素替换为实心像素)

37
为了解决 Android 构建问题,我需要将所有中间的 alpha 像素替换为实心像素(保留透明背景不变)。
如何使用 ImageMagick 或其他命令行工具在整个文件夹中处理所有图片?
图片名称为 bg_all_block.9.png。

bg_all_block.9.png

图片 btn_bg_common_press.9.png

btn_bg_common_press.9.png

enter image description here

更新:我发现我可以检测是否使用了alpha通道,例如使用ImageMagick检测Alpha通道

其他发现的链接

3个回答

107

要从单个图像中删除 alpha 通道,请使用以下命令:

convert input.png -alpha off output.png

为了从文件夹中所有图像中删除 alpha 通道,请使用 find 找到所有 PNG 文件,然后通过 convert 运行它们:

find . -name "*.png" -exec convert "{}" -alpha off "{}" \;

请务必在文件的副本上进行测试,以确保安全。

...

请参阅下面的对话框,答案基于“我们需要删除 alpha 值不为 255 的内容”。

convert input.png -channel A -threshold 254 output.png

并且适用于批处理

mkdir batch
FOR %G IN (*.png) DO convert %G -channel A -threshold 254 batch\%G

2
我不怎么使用 Windows,但可能是 mogrify -alpha off *.png。不确定 mogrify 是否有一个 -r 开关来遍历目录,或者它是否会采用 */*.png - Mark Setchell
我发现这也会移除我的图标的透明背景。而我只需要处理那些中间alpha值的像素... http://www.imagemagick.org/Usage/color_basics/#replace 提供了一些 convert balloon.gif -fill white -opaque blue balloon_white.gif 的提示。现在看看 -opaque 是什么意思。 - Paul Verest
尝试使用“-channel A -threshold 254”。 - Mark Setchell
1
很高兴能够帮忙,抱歉今天我有点慢才找到正确的解决方案。 - Mark Setchell
3
这个指令可行:convert input.png -background white -alpha remove -flatten -alpha off output.png。原意不变,内容通俗易懂。 - Ansa211
显示剩余9条评论

4

在处理批量处理时,在macOS上对我有用的方法是:

for f in *.png; do convert "$f" -channel A -threshold 254 "${f%%.png}.png"; done

1
为了从文件夹中的所有图片(例如所有.png文件)中删除 alpha 通道,我使用以下命令(在 macOS 终端中):
for file in *.png; do convert $file -alpha deactivate; done

很遗憾,这个帖子中给出的其他解决方案都对我无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接