Share via


Tipos de encabezados de mapa de bits

El mapa de bits tiene cuatro tipos de encabezado básicos:

Los cuatro tipos de encabezados de mapa de bits se diferencian por el miembro Size , que es el primer DWORD de cada una de las estructuras.

La estructura BITMAPV5HEADER es una estructura BITMAPV4HEADER extendida, que es una estructura BITMAPINFOHEADER extendida. Sin embargo, BITMAPINFOHEADER y BITMAPCOREHEADER solo tienen el miembro Size en común con otras estructuras de encabezado de mapa de bits.

Los formatos BITMAPCOREHEADER y BITMAPV4HEADER se han reemplazado por los formatos BITMAPINFOHEADER y BITMAPV5HEADER , respectivamente. Los formatos BITMAPCOREHEADER y BITMAPV4HEADER se presentan por motivos de integridad y compatibilidad con versiones anteriores.

El formato de una DIB es el siguiente (para obtener más información, vea Bitmap Storage ):

Una tabla de colores describe cómo se corresponden los valores de píxeles con los valores de color RGB. RGB es un modelo para describir los colores que se producen mediante la emisión de luz.

Los datos de perfil hacen referencia al nombre de archivo de perfil (perfil vinculado) o a los bits de perfil reales (perfil incrustado). El formato de archivo coloca los datos del perfil al final del archivo. Los datos del perfil se colocan justo después de la tabla de colores (si está presente). Sin embargo, si la función recibe una DIB empaquetada, los datos del perfil se incluyen después de los bits de mapa de bits, como en el formato de archivo.

Los datos de perfil solo existirán para las estructuras BITMAPV5HEADER donde bV5CSType está PROFILE_LINKED o PROFILE_EMBEDDED. En el caso de las funciones que reciben DIB empaquetados, los datos de perfil se incluyen después de los datos de mapa de bits.

Un dispositivo palettized es cualquier dispositivo que use paletas para asignar colores. El ejemplo clásico de un dispositivo pálido es una pantalla que se ejecuta en profundidad de color de 8 bits (es decir, 256 colores). La presentación en este modo usa una tabla de colores pequeña para asignar colores a un mapa de bits. Los colores de un mapa de bits se asignan al color más cercano de la paleta que usa el dispositivo. El dispositivo paletizado no crea una paleta óptima para mostrar el mapa de bits; simplemente usa lo que se encuentra en la paleta actual. Las aplicaciones son responsables de crear una paleta y seleccionarla en el sistema. En general, los mapas de bits de 16, 24 y 32 bits por píxel (bpp) no contienen tablas de colores (por ejemplo, paletas óptimas para el mapa de bits); la aplicación es responsable de generar una paleta óptima en este caso. Sin embargo, los mapas de bits de 16, 24 y 32 bpp pueden contener tablas de colores óptimas para mostrar en dispositivos pálidos; en este caso, la aplicación solo necesita crear una paleta basada en la tabla de colores presente en el archivo de mapa de bits.

Los mapas de bits de 1, 4 o 8 bpp deben tener una tabla de colores con un tamaño máximo basado en el bpp. El tamaño máximo de 1, 4 y 8 mapas de bits bpp es de 2 a la potencia del bpp. Por lo tanto, un mapa de bits de 1 bpp tiene un máximo de dos colores, el mapa de bits de 4 bpp tiene un máximo de 16 colores y el mapa de bits de 8 bpp tiene un máximo de 256 colores.

Los mapas de bits que son de 16, 24 o 32 bpp no requieren tablas de colores, pero pueden tenerlos para especificar colores para dispositivos pálidos. Si hay una tabla de colores para un mapa de bits de 16, 24 o 32 bpp, el miembro biClrUsed especifica el tamaño de la tabla de colores y la tabla de colores debe tener esos muchos colores. Si biClrUsed es cero, no hay ninguna tabla de colores.

Las máscaras de campo de bits rojo, verde y azul para BI_BITFIELD mapas de bits siguen inmediatamente las estructuras BITMAPINFOHEADER, BITMAPV4HEADER y BITMAPV5HEADER . Las estructuras BITMAPV4HEADER y BITMAPV5HEADER contienen miembros adicionales para máscaras rojas, verdes y azules de la siguiente manera.

Miembro Significado
Máscara roja Máscara de color que especifica el componente rojo de cada píxel, válido solo si el miembro Compression está establecido en BI_BITFIELDS.
Máscara verde Máscara de color que especifica el componente verde de cada píxel, válido solo si el miembro Compression está establecido en BI_BITFIELDS.
BlueMask Máscara de color que especifica el componente azul de cada píxel, válido solo si el miembro Compression está establecido en BI_BITFIELDS.

 

Cuando el miembro biCompression de BITMAPINFOHEADER se establece en BI_BITFIELDS y la función recibe un argumento de tipo LPBITMAPINFO, las máscaras de color seguirán inmediatamente el encabezado. La tabla de colores, si está presente, seguirá las máscaras de color. Los mapas de bits BITMAPCOREHEADER no admiten máscaras de color.

De forma predeterminada, los datos de mapa de bits están de abajo arriba en su formato. Abajo arriba significa que la primera línea de examen de los datos de mapa de bits es la última línea de examen que se va a mostrar. Por ejemplo, el 0º píxel de la líneade examen 0 de los datos de mapa de bits de un mapa de bits de 10 píxeles por 10píxeles será el 0 píxel de la línea de examen 9de la imagen mostrada o impresa. Los mapas de bits con formato de longitud de ejecución (RLE) y BITMAPCOREHEADER no pueden ser mapas de bits de arriba abajo. Las líneas de examen están alineadas con DWORD , excepto los mapas de bits comprimidos por RLE. Deben rellenarse para anchos de línea de examen, en bytes, que no son divisibles uniformemente por cuatro, excepto los mapas de bits comprimidos de RLE. Por ejemplo, un mapa de bits de 10 por 10 píxeles de 24 bpp tendrá dos bytes de relleno al final de cada línea de examen.