Formato BMP — estrutura e usos do bitmap do Windows
BMP, o bitmap do Windows: cabeçalhos, tabela de cores, por que quase não é comprimido, armazenamento de baixo para cima e quando ainda usar.
O BMP é o formato que salva em arquivo o bitmap independente de dispositivo (DIB) usado no Microsoft Windows e no OS/2. Não é uma especificação definida por um órgão internacional de padronização: a documentação para desenvolvedores da Microsoft funciona, na prática, como especificação. Sua principal característica é a estrutura simples, que qualquer programa lê e escreve com facilidade.
Estrutura do arquivo
Segundo o documento "Bitmap Storage" do Microsoft Learn, um arquivo BMP é composto nesta ordem:
| Ordem | Componente | Conteúdo |
|---|---|---|
| 1 | BITMAPFILEHEADER | Identificador do arquivo (BM), tamanho do arquivo, posição de início dos pixels |
| 2 | BITMAPINFOHEADER (ou cabeçalho V4/V5) | Largura e altura em pixels, bits por pixel, tipo de compressão, resolução |
| 3 | Tabela de cores (array RGBQUAD) | Usada em imagens de 1, 4 ou 8 bits com paleta |
| 4 | Array de pixels | Os dados reais da imagem |
Os dois primeiros bytes do arquivo são BM em ASCII (42 4D em hexadecimal), então mesmo um arquivo com a extensão trocada pode ser identificado como BMP por essa assinatura. O cabeçalho de informações também tem um campo para a resolução de impressão (pixels por metro).
Armazenamento de baixo para cima
O BMP comum guarda os pixels da linha de baixo para a de cima (bottom-up). Se o valor de altura no cabeçalho for negativo, o armazenamento é de cima para baixo (top-down). Além disso, bytes de preenchimento são adicionados ao fim de cada linha para que o número de bytes seja múltiplo de 4. São pontos em que é comum errar ao escrever um programa que interpreta BMP.
Exemplo de cálculo do tamanho da linha
Cada linha do BMP precisa ser alinhada em unidades de 4 bytes. Se uma imagem de 24 bits tem 101 pixels de largura, os dados reais de uma linha somam 101 × 3 = 303 bytes; adiciona-se 1 byte para chegar a um múltiplo de 4 e a linha é salva com 304 bytes. Assim, o tamanho total dos pixels é (bytes por linha) × altura em pixels, e somando o cabeçalho (normalmente 54 bytes) chega-se ao tamanho do arquivo. Por causa dessa regra, ao manipular diretamente imagens cuja largura não é múltiplo de 4, é comum aparecer o erro de linhas deslocadas.
Por que o arquivo é tão grande
Na maioria dos casos o BMP guarda os pixels brutos sem compressão. Um BMP de 24 bits usa 3 bytes por pixel, então uma imagem de 1920×1080 ocupa cerca de 6,2 MB e uma foto de smartphone de 4032×3024, cerca de 36,6 MB. Em imagens com paleta de 8 bits ou menos é possível escolher a compressão RLE (codificação por comprimento de sequência), mas ela quase não tem efeito em fotos. A MDN também recomenda evitar BMP em conteúdo web por causa do tamanho.
Transparência
O BMP tradicional de 24 bits não tem canal alfa. BMPs de 32 bits com cabeçalhos V4 ou V5 podem definir uma máscara alfa, mas muitos programas não a interpretam corretamente como transparência, então para trocar imagens transparentes o PNG é mais seguro.
Quando o BMP ainda é usado
- Equipamentos industriais antigos, dispositivos embarcados, impressoras de recibos e alguns programas internos que só aceitam BMP
- Programas simples ou exemplos didáticos que precisam manipular os pixels diretamente, sem compressão e descompressão
- Forma de armazenar pequenas imagens dentro de ícones do Windows (ICO)
Cuidados ao converter
- BMP → PNG: sem perdas e com grande redução de tamanho. É a melhor conversão para arquivar e compartilhar.
- BMP → JPG: em fotos, o tamanho cai para uma fração de dezenas de vezes menor, mas a compressão é com perdas.
- Outros formatos → BMP: confira a profundidade de bits que o equipamento exige (24 ou 8 bits). As áreas transparentes são preenchidas com a cor de fundo. Você pode salvar em BMP na ferramenta Conversor de formato de imagem.
Experimente agora