O formato BMP

Março 2017

O que é formato BMP

O formato BMP é um dos formatos mais simples atribuído a um arquivo. Ele foi desenvolvido conjuntamente pela Microsoft e pela IBM e é, assim, particularmente usado nas plataformas Windows e OS/2.

Um arquivo BMP é um arquivo bitmap, ou seja, um arquivo de imagem gráfica que armazena os pixels na forma de um quadro de pontos e gere as cores verdadeiras, como elas são, ou por uma paleta indexada. O formato BMP foi concebido para obter um bitmap independente do dispositivo de exibição - DIB (Device independent bitmap - Bitmap independente do dispositivo).

Qual é a estrutura de um arquivo bitmap

Qualquer arquivo BMP se compõem por 3 ou 4 partes, estas são o cabeçalho (dito header em inglês) do arquivo, o cabeçalho de mapa de bits, a paleta de cores e a área de dados da imagem no arquivo. O cabeçalho do arquivo fornece, então, informações sobre o tipo de arquivo (Bitmap), suas dimensões e indica onde começam as informações relativas à imagem propriamente dita. Vejamos separadamente o que é cada uma delas:

Cabeçalho de arquivo

Esta parte, File Header em inglês, tem a assinatura BM e as informações sobre o tamanho e o layout do arquivo BMP, isto é, como aparecem os dados dentro do arquivo.

Cabeçalho de mapas de bits

Nesta parte do arquivo são contidas as informações da imagem e que definem as dimensões, o tipo de compressão, se for o caso, e os detalhes sobre as cores da imagem. Ele é conhecido como bitmap bits em inglês.

Paleta ou mapa de cores

Na verdade, a paleta, color table em inglês, é opcional e somente aparecerá em arquivos de imagens que usem 16 ou 256 cores, isto é, de 4 e 8 bits/pixels. Nas outras imagens, que não tem a paleta de cores, aparece uma parte dita área de dados da imagem.

Área de dados da imagem que contém o arquivo

Esses dados vão permitir que a imagem se exiba como ela é, com os dados dos pixels que devem ser exibidos. Ela pode ter sido comprimida ou não. Esta parte é dita em inglês bitmap-information header.

Como se apresenta a área de informação do cabeçalho bitmap

A assinatura (em 2 Bytes), indica que se trata de um arquivo 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 arquivo em bytes (codificado em 4 Bytes)
Um campo reservado (em 4 Bytes)
O deslocamento da imagem (para 4 Bytes), ou seja, o endereço relativo do início das informações relativas à imagem em relação ao início do arquivo.

Como a imagem é composta

A imagem fornece informações sobre a ela mesma, principalmente as suas dimensões e as suas cores. Ela é composta por quatro campos que veremos abaixo.

Dimensão

A dimensão 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 para Windows 3.1x, 95, NT
0C para OS/2 1.x
F0 para OS/2 2.x
A largura da imagem (em 4 Bytes), ou seja, o número de pixels horizontalmente (em inglês width)
A altura da imagem (em 4 Bytes), ou seja, o número de pixels verticalmente (em inglês height)
O número de planos (em 2 bytes). Este valor tem sempre o valor 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 for 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 (campos de bits), 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 pixels por metro horizontalmente
A resolução vertical (em 4 Bytes), ou seja, o número de pixels 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 de cores

A paleta é opcional, mas quando é definida, ela contém sucessivamente 4 Bytes para cada uma das suas entradas que representam:


A componente azul (em um Byte)
A componente verde (em um Byte)
A componente vermelha (em um Byte)
Um campo reservado (em um Byte)

Codificação

A codificação da imagem faz-se escrevendo sucessivamente os bits que correspondem a cada pixel, cada uma das linhas, iniciando pelo pixel inferior à esquerda:

As imagens com 2 cores utilizam 1 bit por pixel, o que significa que um Byte permite codificar 8 pixels,
As imagens com 16 cores utilizam 4 bits por pixel, o que significa que um Byte permite codificar 2 pixels,
As imagens com 256 cores utilizam 8 bits por pixel, o que significa que um Byte codifica cada pixel,
As imagens com cores reais utilizam 24 bits por pixel, o que significa que são necessários 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.

Veja também


The BMP format
The BMP format
El formato BMP
El formato BMP
BMP-Format
BMP-Format
BMP - Format BMP
BMP - Format BMP
Il formato BMP
Il formato BMP
Este documento, intitulado 'O formato BMP', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.