Mon projet consiste en la quantification d'une image de 16 milions de couleurs en une image en 256 niveaux de couleurs (et non 256 niveaux de gris).
Le problème se situe dans l'affichage du résultat de cette quantification : j'obtient une image en noir et blanc mais qui apparaît quantifiée, cette fois en 256 niveaux de gris.
Je pense donc qu'il faut modifier la palette.
Je crée ma palette ainsi :
for (r = 0 ; r < 64; r += 9 ) // 8 occurences
for (g = 0 ; g < 64; g += 9 ) // 8 occurences
for (b = 0; b < 64; b += 21 ) // 4 occurences
{
logPal->palPalEntry[ColorIndex].peRed = r;
logPal->palPalEntry[ColorIndex].peGreen = g;
logPal->palPalEntry[ColorIndex++].peBlue = b;
}
Je ne sais pas si la déclaration de cration de ma nouvelle palete est bonne:
int nColrs = 256;
LOGPALETTE* logPal = (LOGPALETTE*)new Byte[sizeof(LOGPALETTE) + (nColors - 1) * sizeof(PALETTEENTRY)];
logPal->palVersion = 0x300;
logPal->palNumEntries = (Word)nColors;
CreatePalette(logPal);
Je n'arrive pas non plus à utiliser la nouvelle palette crée pour qu'elle soit active lors de l'affichage du même Canvas qui contenait l'image 16 millions de couleurs après sa modification en 256 couleurs.
Si quelqu'un a compris le baratin lol Je vous remercie d'avance