Windows bitmap

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}
Révision datée du 6 février 2022 à 22:38 par >JackPotte (Révocation des modifications de 46.18.230.12 (retour à la dernière version de Sebleouf))
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Modèle:Voir homonymes Modèle:À sourcer Modèle:Infobox Format de données

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<ref>Modèle:Lien web</ref> :

Format du fichier

Le fichier se découpe en deux parties, à savoir<ref>Modèle:Lien web</ref> :

  • les données relatives au fichier, l'entête :
Modèle:Lang (n° de ligne) Taille Valeur
0x0000 Modèle:Nombre le nombre magique correspondant à l'utilisation du fichier BMP
0x0002 Modèle:Nombre la taille du fichier BMP en octets
0x0006 Modèle:Nombre réservé pour l'identifiant de l'application qui a créé le fichier
0x0008 Modèle:Nombre réservé pour l'identifiant de l'application qui a créé le fichier
0x000A Modèle:Nombre l'Modèle:Lang (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'imageModèle:Etc.

Palette

Les logiciels de lecture utilisent trois octets pour coder la couleur (système rouge vert bleu, RVB)<ref>Modèle:Lien web</ref> :

  • le BMP Modèle:Nombre permet d'allouer Modèle:Nombre bleu, Modèle:Nombre vert et Modèle:Nombre rouge par pixel. N'étant donc pas nécessaire, la palette n'est pas présente dans le fichier BMP 24 bits ;
  • le BMP Modèle:Nombre ne permet que de représenter Modèle:Nombre. 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 (Modèle:Nobr), et assigne à chaque valeur (Modèle:Nobr) 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 Modèle:Nobr
255 B=b255, V=v255, R=r255 Modèle:Nobr

Par exemple, pour une image en niveaux de gris (Modèle:Nombre), les trois valeurs R, V et B seront égales et varieront entre 0 Modèle:Nobr.

La structure du fichier BMP devient donc :

  • en-tête
  • palette à l'Modèle:Nobr (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 Modèle:Nombre.

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 Modèle:Nombre (Modèle:Nombre), Modèle:Nombre (Modèle:Nombre), Modèle:Nombre (Modèle:Nombre), Modèle:Nombre (Modèle:Nombre) ou Modèle:Nombre de couleurs (Modèle:Nombre)<ref>Modèle:Lien web</ref>.

Les images Modèle:Nombre possèdent trois canaux de Modèle:Nombre pour les trois lumières primaires (rouge, vert, bleu) qui peuvent prendre chacune Modèle:Nombre différentes. Les images en Modèle:Nombre de gris sont possibles avec un seul canal de Modèle:Nombre<ref>Modèle:Lien web</ref>.

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<ref>Modèle:Lien web</ref>.

Pour calculer la taille approximative du fichier BMP final, on multiplie la profondeur couleurs (1, 4, 8, 16 ou Modèle:Nombre) 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 Modèle:Nobr (Modèle:Nombre de large par Modèle:Nombre de haut) en Modèle:Nombre (Modèle:Unité de couleurs) aura une taille de Modèle:Nobr soit Modèle:Unité (Modèle:Unité) ou encore la capacité d'une disquette 3″½ haute densité (une telle image ne pourra donc pas être enregistrée sur une disquette Modèle:Unité à 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<ref>Modèle:Lien web</ref>.

Si l'image est codée en Modèle:Nombre, chaque pixel est codé par un entier Modèle:Nombre (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 Modèle:Nombre, 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 Modèle:Nombre ou Modèle:Nombre, 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 Modèle:Nombre (Modèle:Nombre) et Modèle:Nombre (Modèle:Nombre).

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 Modèle:Nombre) ;
    • 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

Modèle:Références

Bibliographie

Voir aussi

Articles connexes

Liens externes

Modèle:Palette Modèle:Portail