On trouve successivement dans le fichier :
La palette contient la liste des couleurs à utiliser pour dessiner le bitmap, chaque
couleur étant codée sur 32 bits (1 octet pour le Rouge, 1 pour le Vert, 1 pour le Bleu, et 1 à 0 pour compléter sur 4
octets)
Une palette est donc définie en 16 millions de couleurs (même si le périphérique ne
sait pas traiter autant de couleurs).
Cette palette est inexistante pour les bitmaps 16 millions de couleurs puisque chaque
pixel est représenté sur 3 octets avec les vraies valeurs de R,V et B.
Pour les autres bitmaps, on représente chaque pixel d'une façon indirecte par un nombre
(sur 1,4 ou 8 bits) qui est un index par rapport à la palette.
(les offsets et valeurs numériques sont exprimés en hexadécimal)
Structures | Type | Nom Microsoft | Offset | Commentaires | |||
BitmapFileHeader | UINT | bfType | 0000 | type du fichier (= "BM" ou,en hexadécimal, 424D) | |||
DWORD | bfSize | 0002 | taille du fichier en octets | ||||
UINT | bfReserved1 | 0006 | réservé (doit être 0000) | ||||
UINT | bfReserved2 | 0008 | réservé (doit être 0000) | ||||
DWORD | bfOffBits | 000A | offset des données depuis la structure | ||||
BitmapInfoHeader | DWORD | biSize | 000E | nombre d'octets de la structure | |||
LONG | biWidth | 0012 | largeur du bitmap en pixels. | ||||
LONG | biHeight | 0016 | hauteur du bitmap en pixels | ||||
WORD | biPlanes | 001A | nombre de plans (doit être 0001) | ||||
WORD | biBitCount | 001C | nombre de |
0001 (1) | bitmap monochrome. palette à 2 entrées Un pixel est codé sur 1 bit (0 ou 1) |
||
0004 (4) | bitmap en 16 couleurs. palette à 16 entrées Un pixel est codé sur 4 bits (0 à F) |
||||||
0008 (8) | bitmap en 256 couleurs. palette à 256 entrées Un pixel est codé sur 8 bits (00 à FF) |
||||||
0018 (24) | bitmap en 16 777 216 couleurs | ||||||
DWORD | biCompression | 001E | type de |
00000000 | non compressé (standard) | ||
00000002 | compression RLE 4 bits par pixel | ||||||
00000001 | compression RLE 8 bits par pixel | ||||||
DWORD | biSizeImage | 0022 | taille de |
taille réelle | si bitmap compressé | ||
00000000 | si bitmap non compressé | ||||||
LONG | biXPelsPerMeter | 0026 | résolution horizontale en pixels par mètre | ||||
LONG | biYPelsPerMeter | 002A | résolution verticale en pixels par mètre | ||||
DWORD | biClrUsed | 002E | nombre de couleurs dans la palette du bitmap |
00000000 | le bitmap utilise le maximum de couleurs correspondant à la valeur de biBitCount |
||
xxxxxxxx | nombre de couleurs accessibles | ||||||
DWORD | biClrImportant | 0032 | nombre de couleurs considérées comme importantes pour
afficher le bitmap. Si =0, toutes les couleurs sont importantes. |
||||
TRGBQUAD | variable | 0036 | Palette, composée |
BYTE | rgbBlue | ||
BYTE | rgbGreen | ||||||
BYTE | rgbRed | ||||||
BYTE | rgbReserved | ||||||
répétés n fois avec : |
biClrUsed<>0 | n=biClrUsed | |||||
biClrUsed=0 | biBitCount=1 | n=2 | |||||
biBitCount=4 | n=16 | ||||||
biBitCount=8 | n=256 | ||||||
biBitCount=24 | n=0 | ||||||
BITS | variable | 0036+n*4 | Bitmap proprement dit |