O formato BMP
O formato BMP é um dos formatos mais simples, desenvolvido conjuntamente pela Microsoft e pela IBM, o que explica que seja partucularmente usadonas plataformas Windows e OS/2. Um ficheiro BMP é um ficheiro bitmap, ou seja, um ficheiro de imagem gráfico que armazena os pixéis sob a forma de quadro de pontos e gerindo as cores, quer em cor verdadeira, quer graças a uma paleta indexada. O formato BMP foi estudado de maneira a obter um bitmap independente do periférico de afixação (DIB, Device independent bitmap).
A estrutura de um ficheiro bitmap é a seguinte :
Rubrica do ficheiro
A rubrica do ficheiro fornece informações sobre o tipo de ficheiro (Bitmap), a sua dimensão e indica onde começam as informações relativas à imagem propriamente dita.
A rubrica compõe-se de quatro campos :
- A assinatura (em 2 bytes), indicando que se trata de um ficheiro BMP com a ajuda dos dois caracteres.
- BM, 424D hexadecimal, indica que se trata de um Bitmap Windows.
- BA indica que se trata de um Bitmap OS/2.
- CI indica que se trata de um ícone cor OS/2.
- CP indica que se trata de um ponteiro de cor OS/2.
- CI indica que se trata de um ícone OS/2.
- PT indica que se trata de um ponteiro OS/2.
- A dimensão total do ficheiro em bytes (codificado em 4 bytes)
- Um campo reservado (em 4 bytes)
- O deslocamento da imagem (em 4 bytes), ou seja, o endereço relativo do início das informações relativas à imagem em relação ao início do ficheiro.
Rubrica da imagem
A rubrica da imagem fornece informações sobre a imagem, nomeadamente as suas dimensões e as suas cores.
A rubrica da imagem é composta por quatro campos:
- A dimensão da rubrica da imagem em bytes (codificada em 4 bytes). Os valores hexadecimais seguintes são possíveis, de acordo com o tipo de formato BMP :
- 28 pour Windows 3.1x, 95, NT,…
- 0C pour OS/2 1.x
- F0 pour OS/2 2.x
- A largura da imagem (em 4 bytes), ou seja, o número de pixéis horizontalmente (em inglês width)
- A altura da imagem (em 4 bytes), ou seja, o número de pixéis verticalmente (em inglês height)
- O número de planos (em 2 bytes). Este valor vale sempre 1
- A profundidade de codificação da cor (em 2 bytes), ou seja, o número de bits utilizadas para codificar a cor. Este valor pode ser igual a 1,4,8,16,24 ou 32
- O método de compressão (em 4 bytes). Este valor vale 0 quando a imagem não é comprimida, ou 1,2 ou 3, de acordo com o tipo de compressão utilizado:
- 1 para uma codificação LAN de 8 bits por pixel
- 2 para uma codificação LAN de 4 bits por pixel
- 3 para uma codificação bitfields, significando que a cor é codificada por uma tripla máscara representada pela paleta
- A dimensão total da imagem em bytes (em 4 bytes).
- A resolução horizontal (em 4 bytes), ou seja, o número de pixéis por metro horizontalmente
- A resolução vertical (em 4 bytes), ou seja, o número de pixéis por metro verticalmente
- O número de cores da paleta (em 4 bytes)
- O número de cores importantes da paleta (em 4 bytes). Este campo pode ser igual a 0 quando cada cor tem a sua importância.
Paleta da imagem
A paleta é opcional. Quando uma paleta é definida, contém sucessivamente 4 bytes para cada um das suas entradas que representam :
- A componente azul (sobre um byte)
- A componente verde (sobre um byte)
- A componente vermelha (sobre um byte)
- Um campo reservado (sobre um byte)
Codificação da imagem
A codificação da imagem faz-se escrevendo sucessivamente as bits que correspondem a cada pixel, linha por linha, começando pelo pixel inferior à esquerda.
- As imagens em 2 cores utilizam 1 bit por pixel, o que significa que um byte permite codificar 8 pixéis
- As imagens em 16 cores utilizam 4 bits por pixel, o que significa que um byte permite codificar 2 pixéis
- As imagens em 256 cores utilizam 8 bits por pixel, o que significa que um byte codifica cada pixel
- As imagens em cores reais utilizam 24 bits por pixel, o que significa que são necessárias 3 bytes para codificar cada pixel, tendo o cuidado de respeitar a ordem da alternância azul, verde e vermelha.
Cada linha da imagem deve comportar um número total de bytes que seja um múltiplo de 4; se não for o caso, a linha deve ser completada com 0 de maneira a respeitar este critério.
Última modificação do dia Quinta 1 de Outubro de 2009 às 19:14:46.