改变png图像的颜色

时间:2016-09-23 08:47:49

标签: .net colors png foreground

我正在寻找一种以编程方式更改png颜色的方法。 到目前为止,我见过的所有解决方案都是使用getpixel并逐个像素地浏览它。 实际上,我只是想用透明背景改变图像的前景色。这可能吗?是否有某种调色板可以轻松实现某种颜色的所有像素的变化?

1 个答案:

答案 0 :(得分:1)

调色板是否存在取决于PNG colortype。如果colortype为3,则PLTE块中包含一个调色板,您可以通过以下步骤以编程方式更改它:

  1. 提取PLTE块
  2. 将前景色的条目更改为新的背景色
  3. 重新计算PLTE块的CRC校验和
  4. 将PLTE块重新插入图像文件
  5. 添加一个tRNS块以使该颜色透明。
  6. 如果colortype为0或2,则可以通过添加tRNS块使前景色透明,但是如果要将这些像素的基础颜色更改为新的背景颜色,则必须按照像你已经观察过的像素。

    但是,确实没有必要改变前景色,因为当你使它变得透明时,RGB组件所包含的内容并不重要。