Wie greift man _schnell_ auf Pixel zu?



  • Hi,

    ich arbeite mich gerade in Visual C++ 2008 Express ein.
    Für mein "Lernprojekt" möchte ich die Pixel eines Bildes auslesen und verändert zurück schreiben (praktisch eine kleine Bildbearbeitung).

    Ich lade also ein Bild in ein Bitmap Objekt (richtig?)

    Bitmap ^inputImage;
    ...
    inputImage = gcnew Bitmap (openFileDialog1->FileName);
    ...

    und itteriere mit zwei for Schleifen über x und y

    for (int y = 1; y < inputImage->Height - 1; y++)
    {
    for (int x = 1; x < inputImage->Width -1; x++)
    {
    // und jetzt greife ich auf ein Pixel zu
    int brightness = Convert::ToInt32(inputImage->GetPixel(x,y).GetBrightness() * 255);

    // dann wird noch etwas am Wert geändert und zurück geschrieben

    }
    }

    Da ganze dauert nun bei einigermaßen großen Bilden sehr lange.

    Wie kann ich schneller auf die einzelnen Pixel zugreifen?

    MfG
    Steffen



  • Schau Dir mal Bitmap.LockBits inkl. dem Beispiel in der MSDN an.



  • Danke, das geht _viel schneller_

    🙂
    MfG
    Steffen


Log in to reply