Ich versuche, die Pixel eines 8bpp zu bearbeiten. Da dies PixelFormat
es indexed
Ich weiß, dass es eine Farbtabelle verwendet, um die Pixelwerte zuzuordnen.
Auch wenn ich die Bitmap bearbeiten kann, indem ich sie in 24bpp konvertiere, ist die Bearbeitung mit 8bpp viel schneller (13ms gegenüber 3ms). Aber, jeden Wert zu ändern, wenn der Zugriff auf die 8bpp Bitmap Ergebnisse in einigen zufälligen RGB-Farben, obwohl das PixelFormat 8bpp bleibt.
Ich entwickle derzeit in C# und der Algorithmus ist wie folgt:
- Original-Bitmap mit 8bpp laden
- Empty temp Bitmap mit 8bpp mit der gleichen Größe wie das Original erstellen
- LockBits beider Bitmaps und, unter Verwendung von P/Invoke, Aufruf einer C++-Methode, bei der ich die
Scan0
eines jedenBitmapData
Objekt. (Ich habe eine C++-Methode verwendet, da sie beim Iterieren durch die Pixel der Bitmap eine bessere Leistung bietet) - Erstellen einer
int[256]
Palette entsprechend einiger Parameter und bearbeiten Sie die temporären Bitmap-Bytes, indem Sie die Pixelwerte des Originals durch die Palette leiten. - UnlockBits.
Meine Frage ist, wie kann ich die Pixelwerte bearbeiten, ohne die seltsamen RGB-Farben zu haben. Oder, noch besser, wie kann ich die 8bpp Bitmap Farbtabelle bearbeiten?