[indépendant du langage]Réorganiser la palette d'un bitmap 256c (Format8bppIndexed)
N'arrivant pas à trouver un outil qui puisse déplacer la place des couleurs dans la palette d'un bitmap j'ai décidé de le faire moi-même, mais j'ai un petit problème.
Voilà comment je fais:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Bitmap bmp=new Bitmap("image.bmp"); // c'est une image 256 couleurs
ColorPalette p=bmp.Palette;
Color tmp=p.Entries[indice2];
p.Entries[indice2]=p.Entries[indice1];
p.Entries[indice1]=tmp;
bmp.Palette=p;
Graphics g=Graphics.FromHwnd(Handle); // Handle est le hWnd de la form
g.DrawImage(bmp, 0, 0);
g.Dispose(); |
D'après ce que j'ai lu ici, je dois bien faire comme ça.
L'image dessinée sur la form a bien ses couleurs d'indice indice1 et indice2 échangées.
Jusqu'ici tout va bien, mais quand je veux sauver l'image modifiée:
Code:
bmp.Save("image2.bmp");
Je réobtiens un image identique à l'originale :?
Je regarde la palette de image2.bmp avec paint shop pro et je vois que sa palette est la même que celle de image.bmp :aie:
Donc voilà c'est embêtant :P (faut peut-être définir des paramètres d'encodage dans une des surcharges de Save pour qu'il sache que je veux garder ma palette, mais je sais pas trop ).