Qu’est-ce qu’un fichier DIB ?
Un fichier DIB stocke une image bitmap Windows indépendante du périphérique au moyen d’en-têtes définis, de tables de couleurs facultatives et de données de pixels. Sa représentation est étroitement liée à BMP et conçue pour être indépendante d’un périphérique d’affichage particulier.
Fonctionnement des fichiers DIB
Un DIB décrit des pixels matriciels à l’aide d’un en-tête d’informations bitmap, de masques de couleur ou d’une table de couleurs facultatifs, et de lignes de balayage alignées sur quatre octets. La même structure apparaît à trois endroits : dans un fichier BMP après la structure BITMAPFILEHEADER de 14 octets, en mémoire sous forme de DIB compacté, et dans le presse-papiers Windows sous la forme CF_DIB ou CF_DIBV5. Windows considère .dib comme une seconde extension pour BMP, tandis que certains outils utilisent DIB pour désigner la forme sans en-tête de fichier. Il existe quatre générations d’en-têtes (BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER, BITMAPV5HEADER), distinguées par la valeur de taille figurant dans leurs quatre premiers octets. Une table de couleurs est obligatoire à 1, 4 et 8 bits par pixel, et les bitmaps BI_BITFIELDS placent trois masques de couleur directement après une structure BITMAPINFOHEADER. Un outil d’importation doit donc lire la structure déclarée plutôt que de supposer que les pixels sont sur 24 bits.
Points clés
- DIB peut désigner des données avec ou sans l’en-tête de fichier BMP. Le codec BMP de Windows associe à la fois
.bmpet.dibau même formatimage/bmp, qui commence par une structureBITMAPFILEHEADER(octetsBM) ; les donnéesCF_DIBdu presse-papiers se composent d’une structureBITMAPINFOdirectement suivie des bits des pixels ; et ImageMagick définit son formatDIBcomme un fichier BMP sans l’en-tête BMP. Vérifiez la présence de la signatureBMavant de choisir un analyseur. - Les lignes de balayage non compressées sont complétées jusqu’à un multiple de quatre octets, et le remplissage ne constitue pas des données de pixels : un bitmap 10×10 sur 24 bits contient deux octets de remplissage par ligne. Calculez le pas de ligne avec
((width * bitsPerPixel + 31) & ~31) >> 3. Les bitmaps compressés en RLE font exception et ne sont pas alignés de cette façon. - Une hauteur positive indique un stockage de bas en haut, où la première ligne stockée est le bas de l’image, et une hauteur négative indique un stockage de haut en bas. Le stockage de haut en bas est disponible uniquement pour les données non compressées : les bitmaps compressés en RLE et les bitmaps
BITMAPCOREHEADERne peuvent pas l’utiliser. - Ne supposez pas qu’un DIB sur 32 bits contient des données de transparence valides. Le codec BMP de Microsoft ignore le canal supplémentaire des bitmaps sur 16 bits et 32 bits, car de nombreux fichiers anciens y contiennent des données invalides ; à partir de Windows 8, il lit l’alpha uniquement dans les fichiers sur 32 bits écrits avec une structure
BITMAPV5HEADER. Il s’agit de la politique d’un codec, pas d’une limite du format : la structure antérieureBITMAPV4HEADERdéfinit aussi un masque alpha. Vérifiez donc comment votre propre décodeur traite le quatrième canal.
Quand les fichiers DIB sont utiles
Attendez-vous à rencontrer des données DIB dans les API graphiques Windows, les transferts via le presse-papiers et les anciens flux de traitement d’images. Une analyse correcte exige de tenir compte des variantes d’en-tête, du remplissage des lignes, des tables de couleurs et du stockage éventuel des lignes de pixels de bas en haut.
Références
- Microsoft Learn : bitmaps indépendants du périphérique
- Microsoft Learn : types d’en-têtes bitmap (générations d’en-têtes, tables de couleurs, alignement des lignes de balayage)
- Microsoft Learn : stockage des bitmaps (structure des fichiers BMP avec BITMAPFILEHEADER)
- Microsoft Learn : structure BITMAPINFOHEADER (signe de la hauteur, tables de couleurs, pas de ligne)
- Microsoft Learn : structure BITMAPV4HEADER (masques de couleur et alpha)
- Microsoft Learn : formats standard du presse-papiers (CF_DIB, CF_DIBV5)
- Microsoft Learn : présentation du format BMP, Windows Imaging Component (extensions et gestion de l’alpha)
- ImageMagick : formats d’image, entrée DIB