将图像转换为红色灰度



我有一个位图图像,我想将其转换为灰度,但使用红色而不是黑色作为灰色的基础。

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);

我怎样才能做到这一点?

在我看来,

您想应用过滤器并从图像中提取红色组件。

基本上,您要做的是否定给定像素的绿色和蓝色分量,并仅捕获红色分量。

我找到了一小段代码来做到这一点。检查以下链接:

http://www.codeproject.com/Articles/1989/Image-Processing-for-Dummies-with-C-and-GDI-Part-1

检查有关滤色器的会话。您可以下载源代码并浏览一下。

这是一种蛮力方法,但它有效:

Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), PixelFormat.Format24bppRgb);
int width = bitmap.Width;
int height = bitmap.Height;
for (int w = 0; w < width; w++)
{
    for (int h = 0; h < height; h++)
    {
        formatted.SetPixel(w, h, Color.FromArgb(bitmap.GetPixel(w, h).A, bitmap.GetPixel(w, h).R, 0, 0));
    }
}

最新更新