Accueil🇫🇷Chercher

Windows bitmap

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.

Windows bitmap
Caractéristiques
Extensions
.bmp, .dib, .rle
Type MIME
image/bmp, image/x-bmp
Signature
42 4D (hexa)
Développé par
Type de format

Organisation du fichier

Le fichier se découpe en trois zones[1] :

  • l'en-tĂŞte du fichier (bitmap-file header et bitmap-information header)[2];
  • la palette de couleurs ;
  • les donnĂ©es relatives Ă  l'image.

Format du fichier

Le fichier se découpe en deux parties, à savoir[3] :

  • les donnĂ©es relatives au fichier, l'entĂŞte :
Offset# (n° de ligne) Taille Valeur
0x0000 2 octets le nombre magique correspondant Ă  l'utilisation du fichier BMP
  • BM - Windows 3.1x, 95, NT, etc.
  • BA - OS/2 Bitmap Array
  • CI - OS/2 IcĂ´ne Couleur (Color Icon)
  • CP - OS/2 Pointeur Couleur (Color Pointer)
  • IC - OS/2 IcĂ´ne (Icon)
  • PT - OS/2 Pointeur (Pointer)
0x0002 4 octets la taille du fichier BMP en octets
0x0006 2 octets rĂ©servĂ© pour l'identifiant de l'application qui a crĂ©Ă© le fichier
0x0008 2 octets rĂ©servĂ© pour l'identifiant de l'application qui a crĂ©Ă© le fichier
0x000A 4 octets l'offset (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, etc.

Palette

Les logiciels de lecture utilisent trois octets pour coder la couleur (système rouge vert bleu, RVB)[4] :

  • le BMP 24 bits permet d'allouer 1 octet bleu, 1 octet vert et 1 octet rouge par pixel. N'Ă©tant donc pas nĂ©cessaire, la palette n'est pas prĂ©sente dans le fichier BMP 24 bits ;
  • le BMP 8 bits ne permet que de reprĂ©senter 256 couleurs. 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 (octet 54), et assigne Ă  chaque valeur (de 0 Ă  255) les trois composantes RVB qui y correspondent.

La palette est donc une table de correspondance de type :

Valeur Ă  afficherRVB
0B=b0, V=v0, R=r0 + octet 00
…
255B=b255, V=v255, R=r255 + octet 00

Par exemple, pour une image en niveaux de gris (256 nuances), les trois valeurs R, V et B seront Ă©gales et varieront entre 0 et 255.

La structure du fichier BMP devient donc :

  • en-tĂŞte
  • palette Ă  l'octet 54 (36 en hexadĂ©cimal) ;
  • image Ă  l'octet 1 078 (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 4 bits.

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 2 couleurs (bit), 16 couleurs (4 bits), 256 couleurs (8 bits), 65 536 couleurs (16 bits) ou 16,8 millions de couleurs (24 bits)[5].

Les images 24 bits possèdent trois canaux de 8 bits pour les trois lumières primaires (rouge, vert, bleu) qui peuvent prendre chacune 256 valeurs diffĂ©rentes. Les images en 256 niveaux de gris sont possibles avec un seul canal de 8 bits[6].

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[7].

Pour calculer la taille approximative du fichier BMP final, on multiplie la profondeur couleurs (1, 4, 8, 16 ou 24 bits) 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 800 Ă— 600 (800 pixels de large par 600 pixels de haut) en 24 bits (16,8 millions de couleurs) aura une taille de (800 Ă— 600 Ă— 24) bits soit 1,44 Mo (1,37 Mio) ou encore la capacitĂ© d'une disquette 3″½ haute densitĂ© (une telle image ne pourra donc pas ĂŞtre enregistrĂ©e sur une disquette 1,44 Mo Ă  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[8].

Si l'image est codĂ©e en 24 bits, chaque pixel est codĂ© par un entier 24 bits (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 16 bits, 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 1 bit ou 4 bits, 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 8 bits (256 couleurs) et 4 bits (16 couleurs).

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 1 octet) ;
    • 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

  1. (en-US) Kashif Iqbal, « BMP - Image File Format », sur docs.fileformat.com, (consulté le )
  2. « BMP File Format », sur www.digicamsoft.com (consulté le )
  3. (en) « Introduction to Computers and Their Applications » [PDF], sur Adelphi University (consulté le )
  4. « Format BMP » [PDF], sur projet.eu.org (consulté le )
  5. « Le format Bitmap », sur chrisatari.net (consulté le )
  6. « A Beginners Guide to Bitmaps », sur paulbourke.net (consulté le )
  7. (en-US) « RLE Compression for Bitmaps », sur www.codeproject.com (consulté le )
  8. « Créer un fichier bitmap avec un éditeur hexadécimal -turrier.fr », sur turrier.fr (consulté le )

Bibliographie

  • (en) James D Murray et William VanRyper, Encyclopedia of graphics file formats, , 1158 p. (ISBN 1565921615, lire en ligne), p. 600-619

Voir aussi

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.