Partager via


Types d’en-têtes Bitmap

La bitmap comporte 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 dans 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é respectivement remplacés par les formats BITMAPINFOHEADER et BITMAPV5HEADER. 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) :

Une table de couleurs présente la correspondance des valeurs de pixel aux valeurs de couleur RGB. RGB est un modèle de description des couleurs générées par l’émission de 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 compressée, les données de profil suivent les bits bitmap, comme dans le format de fichier.

Les données de profil existent uniquement pour les structures BITMAPV5HEADERbV5CSType est PROFILE_LINKED ou PROFILE_EMBEDDED. Pour les fonctions recevant des DIB compressées, les données de profil viennent à la suite des données bitmap.

Un appareil palettisé désigne n’importe quel appareil utilisant des palettes pour attribuer des couleurs. L’exemple typique d’un appareil palettisé est un affichage s’exécutant en profondeur de couleur 8 bits (autrement dit, 256 couleurs). L’affichage dans ce mode utilise une petite table de couleurs pour attribuer des couleurs à une bitmap. Les couleurs d’une bitmap sont attribué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 afficher la bitmap ; il utilise simplement tout ce qui se trouve dans la palette actuelle. Les applications créent une palette et la sélectionnent dans le système. En règle générale, les bitmaps au format 16, 24 et 32 bits par pixel (bpp) ne contiennent pas de tables de couleurs (c'est à dire, des palettes optimales pour le bitmap) ; l’application devra générer une palette optimale dans ce cas. Toutefois, les bitmaps au format 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 au format 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 au format 1 bpp a un maximum de deux couleurs, la bitmap au format 4 bpp a un maximum de 16 couleurs, et la bitmap au format 8 bpp a un maximum de 256 couleurs.

Les bitmaps au format 16, 24 ou 32 bpp ne nécessitent pas de tables de couleurs, mais peuvent en avoir pour spécifier des couleurs pour les appareils palettisés. Si une table de couleurs est présente pour une bitmap au format 16, 24 ou 32 bpp, le membre biClrUsed spécifie la taille de la table de couleurs, qui doit avoir le nombre de couleurs indiqué. Si biClrUsed est égal à zéro, il n’y a pas de 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. La table de couleurs, si elle est présente, suivra les masques de couleur. Les bitmaps BITMAPCOREHEADER ne prennent pas en charge les masques de couleur.

Par défaut, les données bitmap sont au format ascendant. « Ascendant » signifie que la première ligne d’analyse des données bitmap est la dernière ligne d’analyse à afficher. Par exemple, le pixel 0 de la ligne d’analyse des données bitmap 0 d’une bitmap de 10 pixels par 10 pixels sera le pixel 0 de la 9ème ligne d’analyse de l’image affichée ou imprimée. Les bitmaps au format RLE (Run-length encoded) et BITMAPCOREHEADER ne peuvent pas être des bitmaps descendantes. Les lignes d’analyse sont alignées sur DWORD, à l’exception des bitmaps compressées RLE. Elles doivent être remplies 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 au format 24 bpp de 10 x 10 pixels aura deux octets de remplissage à la fin de chaque ligne d’analyse.