Format Bmp de Microsoft
Cette section présente le format d'images Bitmap (BMP) de Microsoft utilisé par Up ! Microsoft Bitmap.
Une image au format Bitmap est encodée avec la convention d'Intel i.e. Little Endian.
La résolution possible est variable même si dans les fait elle est souvent de 72 Dot Per Inch (DPI).
Les palettes de couleurs possibles sont noir et blanc, 16 couleurs, 256 couleurs et couleurs vraies.
En-tête du fichier Bitmap
Les propriétés de l'en-tête du fichier débutent au premier octet du fichier. Elles sont les suivantes :
Propriété | Taille en octets | Description |
Signature | 4. | Signature du format. BM. |
TailleFichier | 4. | Taille du fichier en octets. |
Reservé | 2. | Réservé pour des extensions. 0. |
Reservé | 2. | Réservé pour des extensions. 0. |
Offset | 4. | Offset du début des pixels l'image. |
En-tête de l'image Bitmap
Les propriétés de l'en-tête de l'image suivent celles de l'en-tête du fichier. Elles sont les suivantes :
Propriété | Taille en octets | Description |
TailleStructure | 4. | 40. |
LargeurPixels | 4. | Largeur de l'image en pixels. |
HauteurPixels | 4. | Hauteur de l'image en pixels. |
NbPlans | 2. | Nombre de plans. 1. |
NbBitsParPixel | 2. | Nombre de bits par pixel. |
Compression | 2. | Mode de compression. |
Taille | 4. | Taille de l'image en octets. |
NbPixelsParMetreX | 4. | Nombre de pixels par mètre en abscisse. |
NbPixelsParMetreY | 4. | Nombre de pixels par mètre en ordonnée. |
NbCouleursUtilisees | 4. | Nombre de couleurs utilisées. |
NbCouleursImportantes | 4. | Nombre de couleurs importantes. |
Si la valeur de la propriété HauteurPixels est positive, alors les lignes de l'image sont définies du bas vers le haut.
Si la valeur de la propriété HauteurPixels est négative, alors les lignes de l'image sont définies du haut vers le bas.
Les valeurs possibles de la propriété NbBitsParPixels sont :
- 1 pour une image monochrome.
- 4 pour une image en 16 couleurs.
- 8 pour une image en 256 couleurs.
- 16 pour une image en couleurs vraies sur 2 octets.
- 24 pour une image en couleurs vraies sur 3 octets.
- 32 pour une image en couleurs vraies sur 4 octets.
Les valeurs possibles de la propriété Compression sont :
- 0 pour pas de compression et pas de table des couleurs.
- 1 pour la compression en Rule Length Encode (RLE) sur 8 bits d'une image en 256 couleurs uniquement.
- 2 pour la compression en Rule Length Encode (RLE) sur 4 bits d'une image en 16 couleurs uniquement.
- 3 pour pas de compression et pas de table des couleurs.
- 4 pour la compression en Jpeg.
- 5 pour la compression en Png.
Table des couleurs de la palette de l'image Bitmap
La table des couleurs n'est précisée que pour les palettes noir et blanc, 16 couleurs, 256 couleurs et 65536 couleurs. Sa taille est le nombre de couleurs utilisées ou à défaut le nombre maximal de couleurs. Elle suit l'en-tête de l'image.
Les couleurs sont enregistrées sur trois octets qui sont dans l'ordre Rouge, Vert, Bleu suivi d'un octet inutilisé.
Pour la palette noir et blanc, la première couleur correspond au pixel éteint ; la seconde au pixel allumé.
Codage des couleurs par masque
Quand la valeur de la propriété Compression est 0 ou 3 alors il n'y a pas de table des couleurs. Cela est uniquement possible pour une image en :
- 65536 couleurs.
En cas, chaque pixel de l'image est un mot - 16 bits - se découpant en r bits pour la composante rouge, v bits pour la composante verte et b bits pour la composante bleue.
Les valeurs de r, v et b sont imposées à 5, 5 et 5 pour le mode de compression 0 et elles sont lues dans les trois double mots - 3*2 octets - qui suivent l'en-tête de l'image pour le mode de compression 3.
- Couleurs vraies.
En cas, chaque pixel de l'image est un double mot - 32 bits - se découpant en r bits pour la composante rouge, v bits pour la composante verte et b bits pour la composante bleue.
Les valeurs de r, v et b sont imposées à 8, 8 et 8 pour le mode de compression 0 et elles sont lues dans les trois double mots - 3*2 octets - qui suivent l'en-tête de l'image pour le mode de compression 3.
Codage des pixels de l'image Bitmap
Les pixels commencent à partir de la position Offset donnée dans l'en-tête du fichier.
Les pixels de l'image sont codés ligne après ligne, dans l'ordre défini par la propriété HauteurPixels. Les lignes sont alignées sur un double mot - 4 octets - quand l'image n'est pas compressée.