"Quiero un mapa de bits D, que es en escala de grises. veo una consructor que incluye System.Drawing.Imaging.PixelFormat, pero no entiendo cómo utilizar eso."
Aquí es cómo hacer esto
Bitmap grayScaleBP = new
System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
EDIT: Para convertir a escala de grises
Bitmap c = new Bitmap("fromFile");
Bitmap d;
int x, y;
// Loop through the images pixels to reset color.
for (x = 0; x < c.Width; x++)
{
for (y = 0; y < c.Height; y++)
{
Color pixelColor = c.GetPixel(x, y);
Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
c.SetPixel(x, y, newColor); // Now greyscale
}
}
d = c; // d is grayscale version of c
versión más rápida de switchonthecode enlace de seguimiento para el análisis completo:
public static Bitmap MakeGrayscale3(Bitmap original)
{
//create a blank bitmap the same size as original
Bitmap newBitmap = new Bitmap(original.Width, original.Height);
//get a graphics object from the new image
Graphics g = Graphics.FromImage(newBitmap);
//create the grayscale ColorMatrix
ColorMatrix colorMatrix = new ColorMatrix(
new float[][]
{
new float[] {.3f, .3f, .3f, 0, 0},
new float[] {.59f, .59f, .59f, 0, 0},
new float[] {.11f, .11f, .11f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
//create some image attributes
ImageAttributes attributes = new ImageAttributes();
//set the color matrix attribute
attributes.SetColorMatrix(colorMatrix);
//draw the original image on the new image
//using the grayscale color matrix
g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
//dispose the Graphics object
g.Dispose();
return newBitmap;
}
Lo siento, debería haber declarado que en mi pregunta que quiero la versión en escala de grises de mi mapa de bits original, he editado la publicación para reflejar esto. – 0fnt
Este método (píxel por píxel es demasiado lento) consulte este artículo aquí: http: //www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale – Luis
También, el píxel por el método de píxeles solo usaba el valor Rojo .... – mpen