我有一张黑色背景的图片,前景中有白色元素。该图片经过了平滑处理,因此中间存在一些并非严格意义上的黑色或白色像素。我想让背景透明。我找到了几个关于如何使用 imagemagick 执行此操作的链接,但它们都严格替换一种颜色(例如,使用全 alpha 值“#00000000”替换“#000000FF”)。我想保留混合效果……因此,如果有一个灰色像素“#777777FF”,它将被转换为“#FFFFFF77”之类的颜色,或者任何有意义的颜色。
有谁知道如何做到这一点?
答案1
这篇文章很好地解释了如何做到这一点:
http://www.imagemagick.org/Usage/masking/#alpha
我在我的博客上写了一篇关于它的小文章:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html
基本上,您要做的就是创建一个蒙版,然后将蒙版应用到图像上。您可以分两步执行此操作:
$ convert image.png -colorspace HSB -separate -negate image_mask.png
$ convert image.png -alpha Off \
> image_mask.png -compose CopyOpacity -composite \
> PNG32:image_alpha.png
这将使白色成为透明颜色。要使透明度颜色变为黑色,请删除-negate
标志。