O formato BMP é um dos formatos mais simples atribuído a um arquivo. Ele foi desenvolvido conjuntamente pela Microsoft e pela IBM e é usado principalmente pelas plataformas Windows. Conheça um pouco sobre esse formato no artigo a seguir.
Um arquivo BMP é um arquivo bitmap, ou seja, um arquivo de imagem gráfica que armazena os pixels na forma de uma tabela de pontos e que gerencia as cores verdadeiras, como elas são, graças a uma paleta indexada. O formato BMP foi concebido para obter um bitmap independente do dispositivo de exibição.
Qualquer arquivo BMP se compõe de três ou quatro partes. São elas cabeçalho do arquivo, cabeçalho do bitmap, paleta de cores (única parte opcional) e corpo da imagem no arquivo. Vejamos separadamente o que é cada uma delas.
O cabeçalho do arquivo traz informações sobre o tipo de arquivo e seu tamanho, bem como indica onde começa realmente a informação da imagem. Ele compreende quatro campos:
O primeiro campo é o da assinatura, que indica que se trata de um arquivo BMP com dois caracteres BM, pois trata-se de um mapa de bits do Windows. O segundo campo é para o tamanho total do arquivo em bytes (codificado em 4 bytes).
O terceiro campo é reservado e conta com 4 bytes. O quarto campo é o ajuste da imagem em 4 bytes. Ou seja, a conexão com o início da informação em relação ao começo do arquivo.
Nessa parte do arquivo, estão contidas as informações da imagem que definem as dimensões, o tipo de compressão, se for o caso, e os detalhes sobre as cores da imagem.
O cabeçalho da imagem informa sobre a imagem, principalmente tamanhos e cores. Ele é composto por quatro campos: tamanho do cabeçalho da imagem, largura da imagem, resolução horizontal e resolução vertical.
O tamanho do cabeçalho da imagem (codificado em 4 bytes) possui valores hexadecimais que variam de acordo com o tipo de formato BMP. A largura da imagem (expressa em 4 bytes) aponta o número de pixels horizontal e verticalmente. A resolução horizontal (em 4 bytes) é o número de pixels por metro horizontalmente e a resolução vertical (em 4 bytes) é o número de pixels por metro verticalmente.
A paleta é opcional. Quando uma paleta é definida, ela contém, sucessivamente, 4 bytes para cada uma de suas entradas, representando os componentes azul (em 1 byte), verde (1 byte), vermelho (1 byte) e um campo reservado (1 byte).
A codificação da imagem se faz escrevendo sucessivamente os bits correspondentes a cada pixel, linha por linha, sempre partindo do pixel no canto inferior esquerdo. Imagens com duas cores utilizam 1 bit por pixel, o que significa que um byte permite codificar 8 pixels e as imagens com 16 cores utilizam 4 bits por pixel, o que significa que um byte permite codificar 2 pixels.
Já as imagens com 256 cores utilizam 8 bits por pixel, o que significa que um byte codifica cada pixel e as imagens com cores reais utilizam 24 bits por pixel, o que significa que são necessários 3 bytes para codificar cada pixel, sempre atentando para 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 este não for o caso, a linha deve ser completada com 0 de maneira a respeitar este critério.
Foto: © Valerii Minhirov - 123RF.com