Editing 8bpp indexed Bitmaps

Posted by Pedro Sá on Stack Overflow See other posts from Stack Overflow or by Pedro Sá
Published on 2010-04-07T14:21:24Z Indexed on 2010/04/07 14:23 UTC
Read the original article Hit count: 471

Filed under:
|
|
|

hi, i'm trying to edit the pixels of a 8bpp. Since this PixelFormat is indexed i'm aware that it uses a Color Table to map the pixel values. Even though I can edit the bitmap by converting it to 24bpp, 8bpp editing is much faster (13ms vs 3ms). But, changing each value when accessing the 8bpp bitmap results in some random rgb colors even though the PixelFormat remains 8bpp.

I'm currently developing in c# and the algorithm is as follows:

(C#)

1- Load original Bitmap at 8bpp

2- Create Empty temp Bitmap with 8bpp with the same size as the original

3-LockBits of both bitmaps and, using P/Invoke, calling c++ method where I pass the Scan0 of each BitmapData object. (I used a c++ method as it offers better performance when iterating through the Bitmap's pixels)

(C++)

4- Create a int[256] palette according to some parameters and edit the temp bitmap bytes by passing the original's pixel values through the palette.

(C#)

5- UnlockBits.

My question is how can I edit the pixel values without having the strange rgb colors, or even better, edit the 8bpp bitmap's Color Table?

Regards,

Pedro

© Stack Overflow or respective owner

Related posts about c#

Related posts about gdi+