我有一个位图图像,我想将其转换为灰度图像,但使用红色代替黑色作为灰色的基础。
Bitmap formatted = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
我怎样才能做到这一点?
答案 0 :(得分:1)
在我看来,您想要应用滤镜并从图像中提取红色分量。
基本上,您要做的是否定给定像素的绿色和蓝色分量,并仅捕获红色分量。
我发现了一小段代码就是这么做的。请检查以下链接:
http://www.codeproject.com/Articles/1989/Image-Processing-for-Dummies-with-C-and-GDI-Part-1
查看有关滤镜的会话。你可以下载源代码并捅一下。
答案 1 :(得分: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));
}
}