jueves, 19 de julio de 2012

El formato BMP


El formato BMP es uno de los más simples. Fue desarrollado por Microsoft e IBM en forma conjunta.
Un archivo BMP es un archivo de mapa de bits, es decir, un archivo de imagen de gráficos, con píxeles almacenados en forma de tabla de puntos que administra los colores como colores reales o usando una paleta indexada. 

Normalmente, se caracterizan por ser muy poco eficientes en su uso de espacio en disco, pero pueden mostrar un buen nivel de calidad. Puede guardar imágenes de 24 bits (16,7 millones de colores), 8 bits (256 colores) y menos. Puede darse a estos archivos una compresión sin pérdida de calidad: la compresión RLE (Run-length encoding).

Dependiendo de la profundidad de color que tenga la imagen cada píxel puede ocupar 1 o varios bytes. Generalmente se suelen transformar en otros formatos, como JPEG (fotografías), GIF o PNG (dibujos y esquemas), los cuales utilizan otros algoritmos para conseguir una mayor compresión.


La estructura de un mapa de bits es la siguiente:


1. El encabezado del archivo


El encabezado del archivo proporciona información acerca del tipo de archivo (mapa de bits) y su tamaño, así como también indica dónde comienza realmente la información de la imagen.
El encabezado comprende cuatro campos:
  • La firma (en 2 bytes), que indica que se trata de un archivo BMP con dos caracteres
    • BM424D en hexadecimal, que indica que se trata de un mapa de bits de Windows
    • BA que indica que se trata de un mapa de bits OS/2
    • CI que indica que se trata de un icono de color de OS/2
    • CP indica que es un puntero de color de OS/2
    • IC indica que es un icono de OS/2
    • PT indica que es un puntero de OS/2
  • El tamaño total del archivo en bytes (codificado en 4 bytes)
  • Un campo reservado (en 4 bytes)
  • El desajuste de la imagen (en 4 bytes), es decir, la ubicación del comienzo de la información de la imagen en relación con el comienzo del archivo

2. Encabezado de información del mapa de bits

El encabezado de información del mapa de bits proporciona información acerca de la imagen, en especial las dimensiones y los colores.
La información del mapa de bits comprende cuatro campos:
  • El tamaño del encabezado de información del mapa de bits en bytes (codificado en 4 bytes). Los siguientes valores hexadecimales son posibles según el tipo de formato BMP:
    • 28 para Windows 3.1x, 95, NT
    • 0C para OS/2 1.x
    • F0 para OS/2 2.x
  • El ancho de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma horizontal
  • La altura de la imagen (en 4 bytes), es decir, el número de píxeles contados de forma vertical
  • El número de planos (en 2 bytes). Este valor es siempre 1
  • La profundidad del modelo de color (en 2 bytes), es decir, el número de bits usados para codificar el color. Este valor puede ser equivalente a 1, 4, 8, 16, 24 ó 32
  • El método de compresión (en 4 bytes). Este valor es 0 cuando la imagen no está comprimida o 1, 2 ó 3 según el tipo de compresión usado:
    • 1 para la codificación RLE de 8 bits por píxel
    • 2 para la codificación RLE de 4 bits por píxel
    • 3 para la codificación de campo de bits, lo que significa que el color fue codificado por una máscara triple representada por la paleta
  • El tamaño total de la imagen en bytes (en 4 bytes).
  • La resolución horizontal (en 4 bytes), es decir, el número de píxeles por metro contado de forma horizontal
  • La resolución vertical (en 4 bytes), es decir, el número de píxeles por metro contado de forma vertical
  • El número de colores de la paleta (en 4 bytes)
  • El número de colores importantes de la paleta (en 4 bytes). Este campo puede equivaler a 0 cuando todos los colores son importantes.

3. Paleta de imágenes

La paleta es opcional. Cuando se define la paleta, ésta contiene 4 bytes de forma sucesiva para cada una de las entradas, que representan:
  • El componente azul (en un byte)
  • El componente verde (en un byte)
  • El componente rojo (en un byte)
  • Un campo reservado (en un byte)

4. Codificación de imágenes

La codificación de imágenes se realiza escribiendo en forma sucesiva los bits que corresponden a cada píxel, línea por línea, comenzando por el píxel del extremo inferior izquierdo.
  • Las imágenes de 2 colores usan 1 bit por píxel, lo que significa que un byte permite codificar 8 píxeles
  • Las imágenes de 16 colores usan 4 bits por píxel, lo que significa que un byte permite codificar 2 píxeles
  • Las imágenes de 256 colores usan 8 bits por píxel, lo que significa que se necesita un byte para codificar cada píxel
  • Las imágenes de colores reales usan 24 bits por píxel, lo que significa que se necesitan 3 bytes para codificar cada píxel, respetando la alternancia del orden de los colores para el azul, el verde y el rojo.
Cada línea de la imagen debe comprender un número total de bytes que sea múltiplo de 4; si este esquema no se cumple, la línea se debe completar con todos los 0 necesarios para respetar el criterio. 


Ver más en...
http://es.kioskea.net/contents/video/format-bmp.php3
http://es.wikipedia.org/wiki/Windows_bitmap
http://www.digitalfotored.com/imagendigital/bmp.htm

WINDOSiLL


Aprendiendo como utilizar blogger ;)