2016-09-23 127 views
-2

我正在尋找一種方法來以編程方式更改png的顏色。 到目前爲止,我看到的所有解決方案都是使用getpixel並逐個像素地穿過它。其實,我只是想改變透明背景的圖像的前景色。這可能嗎?是否有某種調色板可以輕鬆實現某種顏色的所有像素的更改?更改png圖像的顏色

回答

1

調色板是否存在取決於PNG colortype。如果中的colorType是3有包含在PLTE塊調色板,您可以以編程通過做這些步驟進行更改:

  1. 提取物PLTE塊
  2. 變化中的條目前景色爲新的背景顏色
  3. 重新計算CRC校驗的PLTE塊
  4. 重新插入PLTE塊圖像文件
  5. 添加緩曲塊,使該顏色透明英寸

如果colortype爲0或2,則可以通過添加tRNS塊來使前景色透明,但是如果要將這些像素的基礎顏色更改爲新的背景色,則必須執行像你已經觀察到的那樣逐像素。

但是,實際上並不需要改變前景色,因爲當您將其設置爲透明時,RGB組件包含的內容並不重要。