Le format BMP a été
développé conjointement
par Microsoft et IBM, il est composé de la structure suivante :
Header du
fichier :
- 2 octets : Signature du fichier BMP, BM (424D en
hexa) en général, d'autres valeures sont possibles : BA,
CI, CP, IC, PT,
- 4 octets : Taille totale du fichier en octets,
- 4 octets : Réservé,
- 4 octets : Offset de l'image.
Header de
l'image :
- 4 octets : Taille de l'entête de l'image en octets.
- 4 octets : Largeur,
- 4 octets : Hauteur,
- 2 octets : Nombre de plans (1 en général),
- 2 octets : Profondeur (nombre
de bits / pixel : 1, 4, 8, 16, 24 ou 32)
- 4 octets : Compression (0 : Non compressé, 1 : RLE de 8
bits par pixel, 2 : RLE de 4 bits par pixel, 3 : codage bitfields)
- 4 octets : Taille totale de l'image en octets,
- 4 octets : Résolution horizontale (nombre de pixels par
mètre horizontalement),
- 4 octets : Résolution verticale (nombre de pixels par
mètre verticalement),
- 4 octets : Nombre de couleurs de la palette,
- 4 octets : Nombre de couleurs importantes de la palette, 0 :
toutes.
Une
palette éventuelle
: Lorsqu'une palette est utilisé, elle est
représentée par une succession de 4 octets, chaque
quadruplet représentant un élément de la palette
sous la forme bleu, vert, rouge, réservé.
L'image,
compressée ou
non.
Remarque
1 : Chaque ligne de l'image
doit comporter un nombre total
d'octets qui soit
un multiple de 4, si ce n'est pas le cas, la ligne doit être
complétée par des 0 de telle
manière à respecter ce critère.
Remarque 2 : L'image commence par la
fin dans un fichier bmp.
Exercice
1) Vous allez faire un programme capable d'afficher les
caractéristiques d'un fichier bmp passé en argument de la
forme :
[roger@mabox TP]$ ./monprog image.bmp
Entete du fichier :
Signature (2 octets) : BM
Taille totale du fichier (4 octets) : 1440054
Champ réservé (4 octets) : 0000
Offset (4 octets) : 54
Entete de l'image :
Taille de l'image (4 octets) : 40
Largeur de l'image (4 octets) : 800
Hauteur de l'image (4 octets) : 600
Nombre de plans (2 octets) : 1
Profondeur (2 octets) : 24
Methode de compression (4 octets) : 0
Taille totale de l'image (4 octets) : 1440000
Resolution horizontale (4 octets) : 2834
Resolution verticale (4 octets) : 2834
Nombre de couleurs de la palette (4 octets) : 0
Nombre de couleurs importantes de la palette (4 octets) : 0
[roger@mabox TP]$
2) Vous allez maintenant modifier ce programme pour qu'il puisse
afficher l'image bmp dans une fenêtre SDL (On ne s'occupera pas
de la compression ni des palettes).