将灰度RGB位图转换为RGBA PNG

时间:2018-03-02 19:35:07

标签: c#

我有一个没有透明度的RGB位图,它有白色背景和黑色文字,对白色背景消除锯齿。我想创建一个新的Bitmap:

  • 保持黑色像素黑色
  • 将白色像素转换为100%透明
  • 将所有灰色像素转换为黑色但具有透明度,因此当放置在白色背景上时它看起来是相同的灰色(我认为这将是颜色的强度?)

新的Bitmap可以是任何新的背景颜色,并且正确地消除了该背景颜色的别名。

我发现最问世的问题是:Change background colour of an anti-aliased image using C# with anti-aliasing。但是,我从一个定义了透明度的图像开始,所以我认为它作为一个新问题更好,然后作为对该问题的评论。

1 个答案:

答案 0 :(得分:0)

你可能想要一个像'photoshop:https://en.wikipedia.org/wiki/Blend_modes#Multiply

中的'Multiply Blend Mode'

您所指的问题似乎表明了这一点的基本逻辑。不幸的是,我不能给出或找到具体的示例代码。

如果你想让'灰色'像素透明,我会保持颜色为黑色,而是改变像素的透明度。 例如,如果您的像素为50%黑色,而不是使用

ARGB(255, 128, 128, 128)

你可以成功

ARGB(128, 255, 255, 255)

当然有一种更好的“算法”方法(也许还会增加alpha通道),我知道这可能不是你期望的“开箱即用”代码示例,但我希望这可能有所帮助你找到了解决方案......