Etude du format BMP
Chaque format graphique renferme des informations multiples identifiables par l'analyse des octets qu'il renferme.
Contenu du fichier
La première partie appelée ENTETE DU FICHIER (file header) est composé de quatre champs sur 14 octets :
- La signature (sur 2 octets) :BM, 424D en hexadécimal pour signifier qu'il s'agit d'un fichier BMP.
- La taille totale du fichier en octets (codée sur 4 octets)
- Un champ réservé (sur 4 octets)
- Le décalage de l'image (sur 4 octets), qui donne l'adresse relative du début des données qui concernent l'image à proprement parler
La deuxième partie est l'ENTETE DE L'IMAGE (information Header) qui informe comme son nom l'indique sur l'image sur 4 champs de 40 octets :
- La taille de l'entête de l'image en octets (codée sur 4 octets). Les valeurs hexadécimales suivantes sont possibles suivant le type de format BMP : 28 pour Windows 3.1x, 95, NT, ...
- La largeur de l'image (sur 4 octets), c'est-à-dire le nombre de pixels horizontalement (en anglais width)
- La hauteur de l'image (sur 4 octets), c'est-à-dire le nombre de pixels verticalement (en anglais height)
- Le nombre de plans (sur 2 octets). Cette valeur vaut toujours 1
- La profondeur de codage de la couleur (sur 2 octets)
- La méthode de compression (sur 4 octets). Cette valeur vaut 0 lorsque l'image n'est pas compressée
- La taille totale de l'image en octets (sur 4 octets).
- La résolution horizontale (sur 4 octets), c'est-à-dire le nombre de pixels par mètre horizontalement
- La résolution verticale (sur 4 octets), c'est-à-dire le nombre de pixels par mètre verticalement
- Le nombre de couleurs de la palette (sur 4 octets)
- Le nombre de couleurs importantes de la palette (sur 4 octets). Ce champ peut être égal à 0 lorsque chaque couleur a son importance.
Arrive ensuite l'image avec le CODAGE de chaque pixel ligne par ligne
Le codage de l'image se fait en écrivant successivement les bits correspondant à chaque pixel, ligne par ligne en commençant par le pixel en bas à gauche.
Les images en 2 couleurs utilisent 1 bit par pixel, ce qui signifie qu'un octet permet de coder 8 pixels
Les images en 16 couleurs utilisent 4 bits par pixel, ce qui signifie qu'un octet permet de coder 2 pixels
Les images en 256 couleurs utilisent 8 bits par pixel, ce qui signifie qu'un octet code chaque pixel
Les images en couleurs réelles utilisent 24 bits par pixel, ce qui signifie qu'il faut 3 octets pour coder chaque pixel, en prenant soin de respecter l'ordre de l'alternance bleu, vert et rouge.
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.
Analyse d'une image
