„Ich möchte ein Bitmap d, dass Graustufen ist. sehe ich einen consructor die System.Drawing.Imaging.PixelFormat enthält, aber ich verstehe nicht, wie das zu nutzen.“
Hier ist, wie diese EDIT
Bitmap grayScaleBP = new
System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
tun: zu Graustufen- für die vollständige Analyse
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
Schnellere Version von switchonthecode folgendem Link zu konvertieren:
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;
}
Es tut mir leid, ich hätte sagen sollen, dass ich in meiner Frage, dass ich die Graustufen-Version meiner ursprünglichen Bitmap habe ich den Beitrag bearbeitet, um dies zu reflektieren. – 0fnt
Diese Methode (Pixel für Pixel ist zu langsam) finden Sie in diesem Artikel hier: http://www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale – Luis
Auch die Pixel-by -pixel-Methode verwendet nur den Rotwert .... – mpen