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

  1. 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 .bmp et .dib au même format image/bmp, qui commence par une structure BITMAPFILEHEADER (octets BM) ; les données CF_DIB du presse-papiers se composent d’une structure BITMAPINFO directement suivie des bits des pixels ; et ImageMagick définit son format DIB comme un fichier BMP sans l’en-tête BMP. Vérifiez la présence de la signature BM avant de choisir un analyseur.
  2. 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.
  3. 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 BITMAPCOREHEADER ne peuvent pas l’utiliser.
  4. 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érieure BITMAPV4HEADER dé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

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement