2013-02-27 162 views
3

我想用另一种颜色替换PNG徽标中黑色的所有实例。我尝试过:Imagemagick替换颜色但保持透明度

convert source.png -fill #123456 -opaque black out.png 

但是,该徽标有一些透明的黑色像素没有转换。我怎样才能改变每个黑色像素,但保持透明度?

+0

您是否设法解决您的问题? – nasaa 2013-07-03 12:22:50

+0

尝试在命令开始附近设置'-channel RGBA',也许? – 2015-08-22 10:00:27

回答

1

你可以尝试这样的事情:

convert source.png -channel RGB -fuzz 99% -fill blue -opaque black dest.png 

但将只如果你的标志是单色(如iOS的图标 - 只有一种颜色和透明度)。

0

我意识到这是一个老问题,但我度过了难以置信的很长时间,没有找到答案。但最后我明白了。

注意:我的图像是一个全黑色,使它与alpha灰度。 (即我的所有像素都像:R = 0,G = 0,B = 0,A = X您的像素可别的,我想你一定能调整我的回答

convert in_file.png -alpha off -fuzz 100% -fill blue -opaque '#000000' -alpha on -format png32 out_file.png32 

。这里发生了什么?

  1. alpha off这意味着,如果图像没有Alpha通道,然后 没有什么变化,如果你的形象也有一个alpha通道,随后 操作会假装它不存在。
  2. 不幸的是,当用012保存图像时后缀,imagemagick将决定使用最有效的格式,索引。我不知道,为什么,但它认为我的图像是1位可表示的:完全透明/完全不透明的颜色,并且我松开了Alpha通道的所有更精细的细节。也许还有其他的解决方案,但我绝对的方式是使用文件名中的'.png32'后缀。这意味着,图像必须以8bit-8bit-8bit-8bit RGBA格式保存。

无论如何,如果你尝试调试,为什么你的形象管道不具有透明度的工作:

  • 在窗口顶部的酒吧GIMP

  • 打开图像您应该看到...Indexed color...或其他内容,例如...RGB color...。如果你看到Indexed color,也许你的管道已经运行良好,只保存错误的格式!

啊,这是一个双重错误......您可能已经这样做是正确的几十个关于错误的1倍......猜猜我在想,如果我发现了这一点绝望谷歌搜索小时后并尝试....

版本:ImageMagick 6.8。9-9 Q16 x86_64的2017年7月31日http://www.imagemagick.org

0

在ImageMagick的,如果你有tranparency,然后尝试

convert source.png -alpha off -fuzz XX% -fill "#123456" -opaque black -alpha on out.png 


XX是百分之一些接近黑色,你可能要包括。如果你只想改变纯黑色,那么你可以设置XX = 0。

请注意,上述代码会将所有黑色像素更改为新颜色,包括透明度下的任何黑色。

如果您只想将完全不透明的黑色更改为新颜色,而不是透明度下的任何黑色,请在您的颜色中包含Alpha值。因此,尝试

convert source.png -fuzz XX% -fill "#123456FF" -opaque "graya(0)" -alpha on out.png 


如果使用IM 7,然后更改转换为magick。