C# - 如何从图像中删除除黑色以外的所有颜色

3

我有一些扫描图像,想要除了黑色之外的所有颜色都去掉。问题是黑色并不总是rgb(0,0,0)。那么我该怎么做呢?

谢谢。


1
所以你只是想获取一张黑色的图片?哈哈 - kevintjuh93
2
黑色始终是 rgb(255,255,255)。你想要的不是保留黑色,而是保留暗部分,对吧? - Thomas Ayoub
6
@Thomas 实际上,黑色始终是 rgb(0, 0, 0) - Dmytro Shevchenko
1
@DmytroShevchenko 我是色盲的,开玩笑的,给你点赞 :) - Thomas Ayoub
2
那么对于这张图片,你认为什么是“黑色”呢?还有@Thomas,如果你无法区分纯白和纯黑,那不是色盲,而是瞎眼 :) - Lasse V. Karlsen
显示剩余3条评论
1个回答

7
你可以使用这段代码:
Bitmap myBitmap = new Bitmap(@"YourPath");
const float limit = 0.3f;
for (int i = 0; i < myBitmap.Width; i++)
{
    for (int j = 0; j < myBitmap.Height; j++)
    {
        Color c = myBitmap.GetPixel(i, j);
        if (c.GetBrightness() > limit)
        {
            myBitmap.SetPixel(i, j, Color.White);
        }
    }
}
myBitmap.Save(@"YourNewPath");

通过调整limit参数来达到您想要的效果。


2
这里可能需要一个简要的解释。 - David Shaked
这是一个很好的分享,但如果你想要一个png图像,可以这样做:myBitmap.SetPixel(i, j, Color.Transparent); 然后将图像保存为png格式。(myBitmap.Save(yourpath, ImageFormat.Png))只是给未来的开发者一点提示。 - Vijunav Vastivch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接