Notations
Notations pour la structure des données.- B (Byte) = entier sur 1 octet
- W (Word) = entier sur 2 octets
- DW (DoubleWord) = entier sur 4 octets
- S[x] (String) = chaîne de caractères avec x caractères
Structure du format
| Donnée | Structure | Valeur | Explication |
| entête du fichier | |||
| file_type | S[2] | 'BM' | identification du format |
| file_size | DW | taille du fichier | |
| reserved | DW | 0 | réservé (inutilisé) |
| bitmap_offset | DW | offset de l'image | |
| entête du bitmap | |||
| header_size | DW | taille de l'entête en octets | |
| width | DW | largeur en pixels de l'image | |
| height | DW | hauteur en pixels de l'image | |
| planes | W | 1 | nombre de plans utilisés |
| bits_per_pixel | W | {1,4,8,16,24,32} | nombre de bits utilisés par pixel |
| compression | DW | 0 = pas de comp. 1 = RLE 8bits 2 = RLE 4bits 3 = bitfield enc. |
méthode de compression |
| size_bitmap | DW | taille de l'image en octets | |
| horiz_resolution | DW | résolution horiz. en pixels par mètre | |
| vert_resolution | DW | résolution vert. en pixels par mètre | |
| colors_used | DW | 0 = palette entière | |
| colors_important | DW | nombre de couleurs importantes | |
| palette (optionnelle) |
Remarques
- Attention au sens de codage : celui-ci se fait de gauche à droite puis de bas en haut
- De plus pour chaque ligne écrite, la taille des données doit être multiple de 4, il faut compléter avec des 0 (et les ignorer à la lecture)
- Dans la palette on écrit successivement dans l'ordre les couleurs en RGB.
- Le code en pascal pour Delphi d'ouverture et d'enregistrement de fichiers BMP est disponible dans les sources de notre projet TPE sur la Compression graphique