Windows bitmap (connu aussi sous l'abréviation de BitMaP en BMP ; en anglais, device-independent bitmap ou DIB), est un format d'image matricielle ouvert développé par Microsoft et IBM. C'est un des formats d'images les plus simples à développer et à utiliser pour programmer. Il est lisible par quasiment tous les visualiseurs et éditeurs d'images. Il a été introduit avec Windows 3.0 en 1990.
Organisation du fichier
Le fichier se découpe en trois zones : l'en-tête du fichier ( et ); la palette de couleurs ; les données relatives à l'image.
Format du fichier Le fichier se découpe en deux parties, à savoir : les données relatives au fichier, l'entête : (n° de ligne) Taille Valeur 0x0000 le nombre magique correspondant à l'utilisation du fichier BMP BM - , 95, NT BA - OS/2 CI - OS/2 Icône Couleur () CP - OS/2 Pointeur Couleur () IC - OS/2 Icône () PT - OS/2 Pointeur () 0x0002 la taille du fichier BMP en octets 0x0006 réservé pour l'identifiant de l'application qui a créé le fichier 0x0008 réservé pour l'identifiant de l'application qui a créé le fichier 0x000A l' (l'adresse de départ) du contenu du BMP
les données relatives à l'image.
On trouve notamment la taille du fichier en octets, l'emplacement de début des données, le nombre de bits par pixels dans l'image, le type de compression utilisé, le nombre de couleurs dans la palette, la largeur et la hauteur de l'image
Palette
Les logiciels de lecture utilisent trois octets pour coder la couleur (système rouge vert bleu, RVB) : le BMP permet d'allouer bleu, vert et rouge par pixel. N'étant donc pas nécessaire, la palette n'est pas présente dans le fichier BMP 24 bits ; le BMP ne permet que de représenter . Il est donc nécessaire de définir un système de correspondance entre la valeur du pixel et les trois composantes qui apparaissent dans l'ordre Bleu, Vert, Rouge. Une table est ajoutée juste après l'en-tête (), et assigne à chaque valeur () les trois composantes RVB qui y correspondent. La palette est donc une table de correspondance de type : Valeur à afficher RVB 0 B=b0, V=v0, R=r0 … 255 B=b255, V=v255, R=r255
Par exemple, pour une image en niveaux de gris (), les trois valeurs R, V et B seront égales et varieront entre 0 .
La structure du fichier BMP devient donc : en-tête palette à l' (36 en hexadécimal) ; image à l'octet (0436 en hexadécimal) ; Il faut tenir compte de cela lors du calcul de l'en-tête. Il existe également un format BMP sur 1 et .
Nombre de couleurs
Le format BMP supporte plusieurs variantes, selon le nombre de couleurs possibles souhaitées. La profondeur de couleurs est le nombre de bits associés à chaque pixel pour en coder la couleur.
Ainsi, les images BMP peuvent être en (), (), (), () ou de couleurs ().
Les images possèdent trois canaux de pour les trois lumières primaires (rouge, vert, bleu) qui peuvent prendre chacune différentes. Les images en de gris sont possibles avec un seul canal de .
Taille du fichier
Le format BMP est quasiment inexistant sur le Web : il ne dégrade pas l'image et n'utilise généralement pas de compression, aussi est-il très lourd. Il existe néanmoins la compression RLE pour le format BMP.
Pour calculer la taille approximative du fichier BMP final, on multiplie la profondeur couleurs (1, 4, 8, 16 ou ) par la hauteur et par la largeur en pixels : (Profondeur de couleurs en bits) × (Hauteur en pixels) × (Largeur en pixels) bits.
Par exemple, une image en ( de large par de haut) en ( de couleurs) aura une taille de soit () ou encore la capacité d'une disquette 3″½ haute densité (une telle image ne pourra donc pas être enregistrée sur une disquette à cause notamment de la table d'allocation des fichiers qui prend une certaine place, tout comme l'en-tête de l'image).
Disposition des données de l'image
Contrairement à la plupart des formats d'images, les pixels de l'image sont codés en partant de la ligne inférieure de l'image. Chaque ligne (codée de gauche à droite) doit toujours occuper un nombre d'octets multiple de 4, excepté si l'image est compressée. Si la ligne ne possède pas un nombre d'octets multiple de 4, on ajoute FF, 00FF, ou 0000FF à la fin de chaque ligne.
Si l'image est codée en , chaque pixel est codé par un entier (RVB), ordre little-endian, c'est-à-dire que les trois octets codent successivement les niveaux de bleu, vert et rouge.
Si l'image est codée avec moins de , chaque pixel est codé sous la forme d'un index dans la table de couleurs (la palette), d'où l'appellation « image indexée ». Dans le cas des images codant les pixels sur ou , c'est-à-dire si plusieurs pixels sont codés dans un même octet, les bits de poids fort concernent le pixel le plus à gauche.
Compression
Le format BMP permet l'utilisation de l'algorithme de compression RLE pour les images () et ().
La compression RLE, introduite dans le format BMP à l'époque de Windows 3.x, n'a été cependant pleinement supportée qu'à partir de Windows 95. Elle est rarement utilisée car elle n'est réellement efficace que sur les images dans lesquelles une majorité de pixels adjacents ont la même couleur.
Le principe : Un octet compris entre 1 et 255 indique le nombre de pixels pour lesquels il faut utiliser l'information contenue dans l'octet suivant ; Un octet à 0 indique une action spéciale, il est suivi d'un second octet : S'il vaut 0, la fin de ligne est atteinte, passer à la ligne suivante ; S'il vaut 1, la fin de l'image est atteinte, fin de lecture ; S'il vaut 2, sauter X colonnes et Y lignes avant de poursuivre (X et Y étant chacun codé sur ) ; S'il vaut entre 3 et 255, il s'agit du nombre de pixels qui suivent, codés comme des données non compressées. Dans ce cas-là, il faut éventuellement sauter un octet inutilisé afin que le nombre d'octets soit pair.
Notes et références
Références
Bibliographie
Voir aussi Articles connexes
PNG GIF TIFF
Liens externes Détails du format BMP
Catégorie:Format de fichier graphique