Farbe eines bestimmten Pixels lesen

Templorials

Erfahrenes Mitglied
Hallo,

ich möchte folgendes mit C# realisieren..

Einlesen eines gespeicherten PNG Bildes und dann das Ermitteln der Farbe (des Farbcodes) eines Pixel an einer bestimmten Stelle (z.B. Pixel auf der Position 100, 100 von der oberen linken Ecke aus)

Ist das Möglich?
Lg, Michael
 
Oki.

Hier ein Snippet, welches ein gegebenes Bild in Graustufen umwandelt. (Mit Gewichtung der Farbkomponenten)

Dies Snippet selber stammt von CodeProject, war das erste das ich in meiner Sammlung gesehen hab welches ohne Änderungen gut lesbar ist. :D

Die Klassen und Methoden sollten genug Anhaltspunkte liefern, um sich mehr Infos zu beschaffen. Wenn nicht, fragt. :)

lg,..

C#:
// GDI+ still lies to us - the return format is BGR, NOT RGB.
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
double redFact =  0.299;
double greenFact =  0.587;
double blueFact = 0.114;

unsafe
{
	byte* p = (byte*)(void*)Scan0;

	int nOffset = stride - b.Width * 3;

	byte red, green, blue;

	for (int y = 0; y < b.Height; ++y)
	{
		for (int x = 0; x < b.Width; ++x)
		{
			blue = p[0];
			green = p[1];
			red = p[2];

			p[0] = p[1] = p[2] = (byte)(redFact * red + greenFact * green + blueFact * blue);
			

			p += 3;
		}
		p += nOffset;
	}
}

b.UnlockBits(bmData);
 
Zurück