我有PNG文件,我想将整个图像转换为半透明。该图像将在KML文件中作为图标叠加层引用,以便在Google地球/地图中使用。
以下示例已使用ImageMagick convert命令向我建议,但似乎都不起作用。第一个示例导致错误,第二个示例无法对图像进行任何可观察的更改。
$ /usr/local/bin/convert 121112142121.png -channel Alpha -evaluate Set 50% 2121112142121.png
convert: no decode delegate for this image format '121112142121.png' @ error/constitute.c/ReadImage/550.
convert: option requires an argument '-evaluate' @ error/convert.c/ConvertImageCommand/1400.
第二个建议的方法是:
convert filename.png -fill '#00000080' -draw 'matte 100,100 reset' output.png
虽然我可以在网上找到许多用于从特定颜色或alpha蒙版创建完全透明图像的示例,但我似乎找不到任何可用于创建半透明图像的工作。我想用convert命令或ImageMagick Perl找到一种方法。
ImageMagick版本为6.8.0-4。
答案 0 :(得分:13)
已找到解决方案:
convert input.png -alpha set -channel A -evaluate set 50% output.png
上述命令使整个图像(所有颜色)半透明。
我遇到的另一个问题是ImageMagick的最新版本是从源代码编译的,没有安装所有最新的图像库(特别是libpng)。密切关注configure的输出,以确保从源代码编译时找到libpng。似乎早于6.6的ImageMagick版本和/或旧版本的libpng可能不支持透明png生成。
答案 1 :(得分:5)
convert input.png -alpha set -channel A -evaluate Divide 2 output.png
感谢@caw在评论中指出这一点。这有助于图像已经具有一些透明像素的情况。 -evaluate set 50%
会破坏已经透明的像素,这些像素具有alpha 0,将其alpha设置为50%,这通常是不可取的。
-evaluate Divide 2
保留alpha,因为完全透明的像素是alpha 0,0除以2仍然是0。
答案 2 :(得分:0)
跟进Tony Bogdanov的评论。如果您已经拥有完全透明的像素,则可能需要使用以下策略:
1。)将透明像素转换为蒙版
convert -alpha extract input.png mask.png
2。)执行上面答案中列出的命令:
convert input.png -alpha on -channel a -evaluate set 65% output.png
3.。)创建一个与原始图像大小相同的空白画布
示例:convert -size 700x800 xc:none blankcanvas.png
4。)使用透明像素掩模将半透明图像和空白画布合成在一起
composite output.png blankcanvas.png mask.png -compose Src final_output.png