Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
|
Re: Anzahl der verschieden Farben eines Bitmap's auslesen
4. Mär 2006, 15:41
Ganz einfach: Die Farben sind der in der Tabelle nach ihrer Verwendungshäufigkeit sortiert.
Was beduetet, dass wenn du am Ende auf 2* 00 00 00 stößt, kannst du dir sicher sein, dass die Farben ab hier nicht mehr verwendet werden.
2. Hast du schon einmal mit Streams gearbeitet? Such mal danach, mit denen geht es ziemlich einfach.
So, ich habe gerade festgestellt, das teilweise eine Standard-Tabelle gespeichert wird, dann gibt es noch eine andere herangehensweise:
1. Entweder du lädst dein Bitmap in ein TBitamp, damit kenne ich mich aber nicht aus, dort kannst du jeden einzelnen Pixel durchscannen und seine Farbwerte speichern ... einfach ein Array von 0 - 255 für deine Farbtabelle anlegen ...
2. Oder du machst die Hardcore-Variante und analysierst den Datenanteil des Bitmaps durch.
Was bedeutet, dass du dir eine Rohdatenzugriff auf das Bitmap verschaffst, mittels Stream.
Dann Scannst du jede Zeile und seetzt in deinem Array 0-255 of boolean true wenn dieser Eintrag verwendet wird.
Schließlich liest du diese Farbwerte aus der Farbtabelle aus, fertig.
mfG
Markus
EDIT: ein Tipp: Beim BMP-Format ließt man die Zeilen von links nach rechts und von UNTEN NACH oben. Wenn die Anzahl der Bytes in einer Zeile nicht durch 4 teilbar ist, wird mit 00 Werten aufgefüllt.
Die Bildbreite kannst du aus dem Header lesen, sie ist von Position 18-21 zu lesen und als longword zu interpretieren.
Markus
|