2013-02-27 161 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。