¿Qué es un archivo DIB?

Un archivo DIB almacena un mapa de bits de Windows independiente del dispositivo mediante encabezados definidos, tablas de colores opcionales y datos de píxeles. Su representación está estrechamente relacionada con BMP y está diseñada para ser independiente de un dispositivo de visualización concreto.

Cómo funcionan los archivos DIB

Un DIB describe píxeles ráster mediante un encabezado de información del mapa de bits, máscaras de color opcionales o una tabla de colores y líneas de barrido alineadas a cuatro bytes. La misma estructura aparece en tres lugares: dentro de un archivo BMP después del BITMAPFILEHEADER de 14 bytes, como un DIB empaquetado en memoria y en el portapapeles de Windows como CF_DIB o CF_DIBV5. Windows trata .dib como una segunda extensión de BMP, mientras que algunas herramientas usan DIB para referirse a la forma sin encabezado. Existen cuatro generaciones de encabezados (BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER, BITMAPV5HEADER), que se distinguen por el valor de tamaño de sus primeros cuatro bytes. La tabla de colores es obligatoria con 1, 4 y 8 bits por píxel, y los mapas de bits BI_BITFIELDS colocan tres máscaras de color directamente después de un BITMAPINFOHEADER, por lo que un importador debe leer la disposición declarada en lugar de suponer que los píxeles tienen 24 bits.

Datos clave

  1. DIB puede referirse a datos con o sin el encabezado de archivo BMP. El códec BMP de Windows registra tanto .bmp como .dib para el mismo formato image/bmp, que comienza con un BITMAPFILEHEADER (bytes BM); los datos CF_DIB del portapapeles consisten en un BITMAPINFO seguido directamente de los bits de los píxeles; e ImageMagick define su formato DIB como un archivo BMP sin el encabezado BMP. Comprueba la firma BM antes de elegir un analizador.
  2. Las líneas de barrido sin comprimir se rellenan hasta alcanzar un múltiplo de cuatro bytes, y el relleno no es parte de los datos de píxeles: un mapa de bits 10×10 de 24 bits contiene dos bytes de relleno por fila. Calcula la distancia entre filas como ((width * bitsPerPixel + 31) & ~31) >> 3. Los mapas de bits comprimidos con RLE son la excepción y no se alinean de esta manera.
  3. Una altura positiva indica almacenamiento de abajo hacia arriba, en el que la primera fila almacenada es la parte inferior de la imagen, y una altura negativa indica almacenamiento de arriba hacia abajo. El almacenamiento de arriba hacia abajo solo está disponible para datos sin comprimir: los mapas de bits comprimidos con RLE y los mapas de bits BITMAPCOREHEADER no pueden almacenarse de arriba hacia abajo.
  4. No supongas que un DIB de 32 bits contiene transparencia válida. El códec BMP de Microsoft ignora el canal adicional de los mapas de bits de 16 bits y 32 bits porque muchos archivos heredados contienen datos no válidos en ese canal; a partir de Windows 8, solo lee el canal alfa de archivos de 32 bits escritos con un BITMAPV5HEADER. Esa es la política de un códec, no una limitación del formato: el BITMAPV4HEADER anterior también define una máscara alfa, así que confirma cómo trata tu propio decodificador el cuarto canal.

Cuándo son relevantes los archivos DIB

Es habitual encontrar datos DIB en las API gráficas de Windows, las transferencias del portapapeles y los flujos de trabajo de imágenes heredados. Para analizarlos correctamente, hay que prestar atención a las variantes del encabezado, los bytes de relleno de las filas, las tablas de colores y si las filas de píxeles se almacenan de abajo hacia arriba.

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis