如何使用ImageMagick替换包含透明度的图像中的颜色,但之后保留原始图像的透明度。
这对于批量更改图标中的颜色非常有用。
答案 0 :(得分:2)
更新了答案
选项1
更简单的选项可能是这样的:
convert start.png -alpha deactivate -fill blue -opaque red -alpha activate result.png
改变了这个:
到此:
选项2
另一个使用映像的内存中副本的选项也可以避免创建2个进程并将中间文件写入磁盘的需要:
convert start.png -write MPR:orig \
-alpha off -fill blue -opaque red \
MPR:orig -compose CopyOpacity -composite result.png
选项3
另一种方法,使用clone
代替MPR:
convert start.png \
\( +clone -alpha off -fill blue -opaque red \) \
+swap -compose CopyOpacity -composite result.png
原始答案
如果我创建的图像包含这样的透明度:
convert -size 400x400 xc:none -fill red -draw "rectangle 10,10 100,100" -fill blue -draw "rectangle 200,200 300,300" -bordercolor black -border 5 start.png
我会得到这个(我将它显示在棋盘上,只是为了透明化):
如果我现在运行
convert start.png -fill yellow -opaque red result.png
我会得到这个(再次覆盖在棋盘上):
不确定为什么你需要一个更复杂的两阶段过程 - 或者我误解了你的问题?
答案 1 :(得分:0)
convert file-in.png -alpha off -fill REPLACEMENT -opaque COLOR file-out.png
然后
convert file-out.png file-in.png -compose CopyOpacity -composite PNG32:file-final.png