使用 imagemagick 将不透明颜色转换为 alpha

spa*_*rky 10 imagemagick

我有一个黑色背景的图像,前景中有白色元素。图像经过平滑处理,因此存在并非严格意义上的黑色或白色的“中间”像素。我想让背景透明。我找到了几个关于如何使用 imagemagick 执行此操作的链接,但所有这些链接都严格替换了一种颜色(比如 #000000FF”与完整的 alpha“#00000000”)。我想保留混合......所以如果有一个灰色像素“# 777777FF”,它会被转换成“#FFFFFF77”之类的东西,或者任何有意义的东西。

有谁知道如何做到这一点?

小智 11

这篇文章很好地解释了如何做到这一点: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
Run Code Online (Sandbox Code Playgroud)

这将使白色成为透明色。要使透明颜色变黑,请移除-negate标志。