2016-09-23 129 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组件包含的内容并不重要。