用透明度替换图像中的颜色

时间:2015-10-06 10:35:52

标签: imagemagick imagemagick-convert

如何使用ImageMagick替换包含透明度的图像中的颜色,但之后保留原始图像的透明度。

这对于批量更改图标中的颜色非常有用。

2 个答案:

答案 0 :(得分:2)

更新了答案

选项1

更简单的选项可能是这样的:

convert start.png -alpha deactivate -fill blue -opaque red -alpha activate result.png

改变了这个:

enter image description here

到此:

enter image description here

选项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

我会得到这个(我将它显示在棋盘上,只是为了透明化):

enter image description here

如果我现在运行

convert start.png -fill yellow -opaque red result.png

我会得到这个(再次覆盖在棋盘上):

enter image description here

不确定为什么你需要一个更复杂的两阶段过程 - 或者我误解了你的问题?

答案 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