L'édition 8bpp indexé Bitmaps

je suis en train de modifier les pixels d'une 8bpp. Depuis cette PixelFormat est indexé je suis conscient qu'il utilise une Table de Couleurs pour mapper les valeurs de pixel. Même si je peux modifier l'image en le convertissant en 24bpp, 8bpp édition est beaucoup plus rapide (13ms vs 3ms). Mais, en changeant chaque valeur lors de l'accès à la 8bpp bitmap résultats dans certains aléatoire de couleurs rvb, même si le PixelFormat reste 8bpp.

Je suis en train de développer en c# et l'algorithme est le suivant:

(C#)

1 - Charge Bitmap d'origine à 8bpp

2 - Créer le Vide temp Bitmap avec 8bpp avec la même taille que l'original

3-LockBits de deux images et, à l'aide de P/Invoke, l'appel de c++ méthode où je passe la Scan0 de chaque objet BitmapData. (J'ai utilisé du c++ méthode qu'il offre de meilleures performances lors du parcours de l'image pixels)

(C++)

4 - Créer un int[256] la palette en fonction de certains paramètres et de modifier le temp bitmap octets en passant de l'original de valeurs de pixels par le biais de la palette.

(C#)

5 - UnlockBits.

Ma question est comment puis-je modifier les valeurs de pixel sans avoir l'étrange couleurs rvb, ou mieux encore, de modifier le 8bpp bitmap Couleur du Tableau?

OriginalL'auteur Pedro Sá | 2010-04-07