Types d’en-têtes Bitmap

La bitmap a quatre types d’en-têtes de base :

Les quatre types d’en-têtes bitmap sont différenciés par le membre Size , qui est le premier DWORD de chacune des structures.

La structure BITMAPV5HEADER est une structure BITMAPV4HEADER étendue, qui est une structure BITMAPINFOHEADER étendue. Toutefois, BITMAPINFOHEADER et BITMAPCOREHEADER ont uniquement le membre Size en commun avec d’autres structures d’en-tête bitmap.

Les formats BITMAPCOREHEADER et BITMAPV4HEADER ont été remplacés par les formats BITMAPINFOHEADER et BITMAPV5HEADER , respectivement. Les formats BITMAPCOREHEADER et BITMAPV4HEADER sont présentés à des fins d’exhaustivité et de compatibilité descendante.

Le format d’une DIB est le suivant (pour plus d’informations, consultez Stockage Bitmap ) :

Un tableau de couleurs décrit comment les valeurs de pixels correspondent aux valeurs de couleur RVB. RVB est un modèle permettant de décrire les couleurs produites en émettant de la lumière.

Les données de profil font référence au nom du fichier de profil (profil lié) ou aux bits de profil réels (profil incorporé). Le format de fichier place les données de profil à la fin du fichier. Les données de profil sont placées juste après la table de couleurs (le cas échéant). Toutefois, si la fonction reçoit une DIB empaquetée, les données de profil viennent après les bits bitmap, comme dans le format de fichier.

Les données de profil n’existent que pour les structures BITMAPV5HEADERbV5CSType est PROFILE_LINKED ou PROFILE_EMBEDDED. Pour les fonctions qui reçoivent des D DIBs empaquetés, les données de profil viennent après les données bitmap.

Un appareil palettisé est tout appareil qui utilise des palettes pour attribuer des couleurs. L’exemple classique d’un appareil palettisé est un affichage s’exécutant dans une profondeur de couleur de 8 bits (c’est-à-dire 256 couleurs). L’affichage dans ce mode utilise une petite table de couleurs pour affecter des couleurs à une bitmap. Les couleurs d’une image bitmap sont affectées à la couleur la plus proche de la palette utilisée par l’appareil. L’appareil palettisé ne crée pas de palette optimale pour l’affichage de la bitmap ; il utilise simplement ce qui se trouve dans la palette actuelle. Les applications sont responsables de la création d’une palette et de sa sélection dans le système. En général, les bitmaps 16, 24 et 32 bits par pixel (bpp) ne contiennent pas de tables de couleurs (palettes optimales pour l’image bitmap) ; l’application est responsable de la génération d’une palette optimale dans ce cas. Toutefois, les bitmaps 16, 24 et 32 bpp peuvent contenir de telles tables de couleurs optimales pour l’affichage sur les appareils palettisés ; dans ce cas, l’application doit simplement créer une palette basée sur la table de couleurs présente dans le fichier bitmap.

Les bitmaps de 1, 4 ou 8 bpp doivent avoir une table de couleurs avec une taille maximale basée sur le bpp. La taille maximale des bitmaps 1, 4 et 8 bpp est de 2 à la puissance du bpp. Ainsi, une bitmap 1 bpp a un maximum de deux couleurs, la bitmap 4 bpp a un maximum de 16 couleurs et la bitmap 8 bpp a un maximum de 256 couleurs.

Les bitmaps de 16, 24 ou 32 bpp ne nécessitent pas de tables de couleurs, mais peuvent avoir pour spécifier des couleurs pour les appareils palettisés. Si une table de couleurs est présente pour l’image bitmap 16, 24 ou 32 bpp, le membre biClrUsed spécifie la taille de la table de couleurs et la table de couleurs doit contenir autant de couleurs. Si biClrUsed est égal à zéro, il n’existe aucune table de couleurs.

Les masques de champ de bits rouge, vert et bleu pour les bitmaps BI_BITFIELD suivent immédiatement les structures BITMAPINFOHEADER, BITMAPV4HEADER et BITMAPV5HEADER . Les structures BITMAPV4HEADER et BITMAPV5HEADER contiennent des membres supplémentaires pour les masques rouges, verts et bleus comme suit.

Membre Signification
Masque rouge Masque de couleur qui spécifie le composant rouge de chaque pixel, valide uniquement si le membre Compression est défini sur BI_BITFIELDS.
Masque vert Masque de couleur qui spécifie le composant vert de chaque pixel, valide uniquement si le membre Compression est défini sur BI_BITFIELDS.
Masque bleu Masque de couleur qui spécifie le composant bleu de chaque pixel, valide uniquement si le membre Compression est défini sur BI_BITFIELDS.

 

Lorsque le membre biCompression de BITMAPINFOHEADER est défini sur BI_BITFIELDS et que la fonction reçoit un argument de type LPBITMAPINFO, les masques de couleur suivent immédiatement l’en-tête. Le tableau de couleurs, s’il est présent, suit les masques de couleur. Les bitmaps BITMAPCOREHEADER ne prennent pas en charge les masques de couleur.

Par défaut, les données bitmap sont de bas en haut dans leur format. De bas en haut signifie que la première ligne d’analyse des données bitmap est la dernière ligne d’analyse à afficher. Par exemple, le 0ème pixel de la0ème ligne de balayage des données bitmap d’une image bitmap de 10 pixels par 10 pixels sera le 0ème pixel de la 9ème ligne de balayage de l’image affichée ou imprimée. Les bitmaps au format encodé en longueur d’exécution (RLE) et les bitmaps BITMAPCOREHEADER ne peuvent pas être des bitmaps de haut en bas. Les lignes d’analyse sont alignées DWORD , à l’exception des bitmaps compressées par RLE. Ils doivent être remboursés pour les largeurs de ligne d’analyse, en octets, qui ne sont pas uniformément divisibles par quatre, à l’exception des bitmaps compressées RLE. Par exemple, une bitmap 24 bpp de 10 x 10 pixels aura deux octets de remplissage à la fin de chaque ligne d’analyse.