Schneller als GetPixel?
-
Hallo,
wie komme ich schneller an die Farbinformationen der einzelnen Pixel ran?Folgende Situation:
1. Ich bekomme vom Scanner eine Bitmap-Datei
2. Nun möchte ich die Daten der Pixel in ein Array bekommen.Mögliche Lösung: Anwendung von GetPixel in einer Schleife.
Faszit: Funkt., aber zu langsam.Frage: Gibt es eine Möglichkeit, "direkter" auf die Pixel zuzugreifen?
Mein Traum:
Mit einem Befehl die gesamte Bitmap einem Array zuweisen.
-
benutze Scanline für solche operationen!
um deinen traum wahr werden zu lassen, schreibe einfach ne funktion der du das array und das bild übergibst und die das auslesen der daten vornimmt. dann haste das in einem befehl...
-
nur mal aus interesse, wozu brauchst du ein bmp in einem array?
die pixel stehen doch schon in einem array zur verfügung: (Bitmpa->Canvas->Pixels[][])
-
@Jaster2000:
Bitmpa->Canvas->Pixels[][] ist kein Array (sieht nur so aus) sondern eine Property. D.h. für jedes Pixel wird die Funktion GetPixel() aufgerufen.
-
ok, aber trotzdem kann er es doch als array verwenden, also wozu das bild vorher in ein array schmeißen
-
weil bei Pixel[x][y] wie schon beschrieben GetPixel aufgerufen wird und zwar bei JEDEM pixel. hast du also ein bild mit 1000x1000 pixeln, sind das 1.000.000 aufrufe von GetPixel. während dessen, wenn du ScanLine benutzt du direkt einen Zeige auf eine Bildzeile (bildarray) hast, was verdammt schnell ist, da der unnötige aufruf einer Zwischenfunktion entfällt!
-
Danke Sunday für Deinen gute Lösung.
Ich wollte ScanLine bereits schon mal einsetzten. Leider funktionierte der von Inprise vorgelegte Beipielcode nicht so richtig könntest Du mir, einen funktionierenden Beispielcode posten?
-