Les formats d'images ne sont pas si complexes.
C'est juste une suite d'additions en fonction des pixels allumés selon les différents plans.
Pour les sprites, selon les tailles 8x8, 16x16 ou 32x32, le stockage se fera sur un char, short ou long. Example d'algorithme rudimentaire (en C#) qui calcul les plans pour chaque ligne du bitmap en 4 niveaux de gris. Le pricipe reste le même pour du noir et blanc ou pour n niveaux de gris.
// build the two layers of the bitmap
for (int y=0; y<bmp.Height; y++)
{
// new line
// reset layers
lightLayer=0x00;
darkLayer=0x00;
bitNumber=0;
for (int x=0; x<bmp.Width; x++)
{
bitNumber=((int) Math.Pow(2, (bmp.Width-1)-x));
clr=bmp.GetPixel(x, y);
if (clr.ToArgb() == Color.Black.ToArgb())
{
darkLayer+=bitNumber;
lightLayer+=bitNumber;
}
else if (clr.ToArgb() == Color.DarkGray.ToArgb())
{
darkLayer+=bitNumber;
}
else if (clr.ToArgb() == Color.LightGray.ToArgb())
{
lightLayer+=bitNumber;
}
}
après tu organises les couches selon le format que tu veux c-à-d couches entrelacées ou séparées.
Voilà. J'espère que ça éclaircit ta lanterne.
JFG: je sais que l'on peut utiliser >> pour le calcul de la position du bit, mais là, ça marche bien, donc j'y touche plus
Fred.