Formatos de arquivo
O que é BMP? O formato bitmap explicado
BMP é o formato bitmap sem compressão e sem perda do Windows. Explicamos a estrutura dos cabeçalhos, as profundidades de cor, as limitações e como deixar esses arquivos menores.
Autor: Hemen Dönüştür Editör EkibiPublicado em: 9 min de leitura

O BMP é um dos formatos de imagem mais antigos e simples do mundo Windows. Um arquivo BMP normalmente grava os pixels no disco linha por linha, sem nenhuma compressão. Essa simplicidade o torna fácil de ler e sem perda, e é essa mesma simplicidade que deixa os arquivos enormes. Este artigo mostra de onde veio o BMP, o que há dentro do arquivo, os detalhes de profundidade de cor e transparência, onde ele ainda aparece hoje e como convertê-lo para formatos mais práticos.
O que é BMP?
BMP (bitmap, extensão .bmp) é um formato de arquivo de imagem raster, baseado em pixels. A documentação técnica também o chama de DIB, sigla em inglês para bitmap independente de dispositivo. "Independente de dispositivo" significa que a imagem pode ser interpretada da mesma forma, seja qual for a placa de vídeo ou a impressora em que foi criada: o arquivo traz, no próprio cabeçalho e na tabela de cores, as informações necessárias para decodificar suas cores.
Segundo a documentação Win32 da Microsoft, um arquivo bitmap começa com uma estrutura BITMAPFILEHEADER, seguida de um BITMAPINFOHEADER, BITMAPV4HEADER ou BITMAPV5HEADER, depois uma tabela de cores opcional e, por fim, os dados de pixel. O tipo MIME é image/bmp.
Um breve histórico: do Windows e OS/2 até hoje
O BMP nasceu do trabalho conjunto da Microsoft e da IBM no Windows e no OS/2 no fim dos anos 1980. Os bitmaps da época do Windows 1.0 dependiam muito do dispositivo de saída; a forma independente de dispositivo se popularizou com o Windows 3.0, em 1990. O BITMAPCOREHEADER de 12 bytes, definido para o OS/2 Presentation Manager, é o motivo pelo qual ainda se fala em arquivos "BMP do OS/2".
Com os anos, o formato foi ampliado com a adição de campos ao fim do cabeçalho. Segundo a descrição de formato da Library of Congress, a versão 5 chegou com o Windows 98, em 1998, e passou a permitir gravar perfis de cor ICC no arquivo. Os tamanhos de cabeçalho mais comuns hoje são:
| Cabeçalho | Tamanho | Principal novidade |
|---|---|---|
| BITMAPCOREHEADER | 12 bytes | Estrutura básica compatível com o OS/2 1.x |
| BITMAPINFOHEADER | 40 bytes | O cabeçalho mais comum, do Windows 3.0; campos de compressão e resolução |
| BITMAPV4HEADER | 108 bytes | Máscaras de cor, máscara alfa e informações de espaço de cor |
| BITMAPV5HEADER | 124 bytes | Perfis ICC incorporados ou vinculados, intenção de renderização |
Os leitores identificam qual cabeçalho está em uso pelo valor de tamanho no primeiro campo. Assim, programas antigos podem ignorar os campos novos e ainda ler o básico.
Por dentro de um arquivo BMP
Cabeçalho do arquivo e a assinatura "BM"
Todo arquivo BMP começa com um cabeçalho de arquivo de 14 bytes, e os dois primeiros bytes são os caracteres ASCII BM (hex 42 4D). O cabeçalho guarda o tamanho total do arquivo e o deslocamento em bytes onde começam os dados de pixel. Um DIB colocado na área de transferência do Windows (formato CF_DIB) omite esses 14 bytes e começa direto no cabeçalho de informações.
Cabeçalho de informações
O cabeçalho de informações contém a largura, a altura, os bits por pixel (biBitCount), o tipo de compressão, a resolução horizontal e vertical (em pixels por metro) e o número de cores usadas na tabela de cores.
Tabela de cores (paleta)
Em imagens com 8 bits por pixel ou menos, um pixel não é uma cor, e sim um índice na tabela de cores. No exemplo documentado pela Microsoft, um bitmap de 32x32 com 16 cores tem uma matriz de pixels de 32 x 32 x 4 = 4096 bits, porque 4 bits bastam para endereçar 16 cores.
Dados de pixel: linhas de baixo para cima e alinhamento de 4 bytes
O BMP tem duas características incomuns. Primeiro, se a altura for positiva, as linhas são gravadas de baixo para cima: a primeira linha do arquivo é a última linha da imagem. Uma altura negativa grava as linhas de cima para baixo, mas essas imagens não podem ser comprimidas. Segundo, cada linha é preenchida até um múltiplo de 4 bytes. A Microsoft dá o comprimento da linha (stride) assim:
stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride
Em uma imagem de 1920x1080 com 24 bits, cada linha tem 1920 x 3 = 5.760 bytes (já é múltiplo de 4), então os dados de pixel somam 5.760 x 1.080 = 6.220.800 bytes. Com os 54 bytes de cabeçalho, o arquivo fica com cerca de 6,2 MB. A mesma imagem em JPG costuma ocupar uma pequena fração disso.
Profundidade de cor, compressão e transparência
A documentação do BITMAPV5HEADER define 1, 4, 8, 16, 24 e 32 bits por pixel (o valor 0 significa que a profundidade vem dos dados JPEG ou PNG incorporados). 1 bit é preto e branco, 4 bits são 16 cores e 8 bits, uma paleta de 256 cores. Com 24 bits, cada pixel ocupa três bytes na ordem azul, verde, vermelho.
O campo de compressão pode ter estes valores:
- BI_RGB: sem compressão. Na prática, a grande maioria dos arquivos BMP.
- BI_RLE8 e BI_RLE4: codificação simples por comprimento de sequência (run-length) para imagens com paleta de 8 e 4 bits. Útil em grandes áreas de cor lisa, quase inútil em fotos.
- BI_BITFIELDS: não é compressão; máscaras definem onde ficam os bits de vermelho, verde e azul em pixels de 16 e 32 bits (por exemplo, RGB 565).
- BI_JPEG e BI_PNG: permitem dados JPEG ou PNG dentro do bitmap. Raramente suportados por visualizadores comuns.
A transparência é o ponto mais inconsistente do BMP. A máscara alfa dos cabeçalhos V4 e V5 pode definir o quarto byte de um pixel de 32 bits como opacidade, mas em um BMP clássico de 32 bits esse byte é descrito como não utilizado, e muitos programas o ignoram. Por isso não é nada raro um BMP de 32 bits aparecer transparente em um programa e com fundo preto em outro. Se você precisa de transparência, o PNG é uma escolha muito mais segura.
Suporte em sistemas, navegadores e programas
O BMP abre em quase qualquer lugar. Os visualizadores nativos do Windows e o Paint, o Pré-Visualização do macOS e os visualizadores comuns do Linux leem o formato. O guia de formatos de imagem da MDN indica suporte a BMP em todas as versões do Chrome, Edge, Firefox, Opera e Safari. O mesmo guia ressalta que arquivos BMP sem compressão são muito grandes em comparação com PNG ou JPG e, em geral, devem ser evitados em conteúdo de sites.
Onde o BMP é usado hoje?
- Recursos de aplicativos Windows e programas legados: imagens de barras de ferramentas, gráficos de assistentes de instalação e alguns recursos de jogos ainda são BMP.
- Sistemas embarcados e microcontroladores: um dispositivo com tela não precisa de decodificador JPEG; os dados de pixel podem ser copiados direto para a tela.
- Câmeras industriais, scanners e ferramentas de teste: quando é preciso uma saída bruta e sem perda, o BMP é um formato intermediário simples.
- Ensino: com um cabeçalho de apenas algumas dezenas de bytes, o BMP costuma ser o primeiro formato que os alunos leem e gravam em cursos de processamento de imagens.
Pontos fortes e fracos
| Pontos fortes | Pontos fracos |
|---|---|
| Sem perda; os valores dos pixels nunca mudam | Sem compressão, então os arquivos são muito grandes |
| Trivial de ler e gravar, sem custo de CPU | Suporte inconsistente à transparência |
| Abre em praticamente todo sistema operacional e navegador | Suporte fraco a metadados (EXIF, descrições) |
| Os modos com paleta servem para dispositivos com poucos recursos | Pouco prático para web, e-mail e formulários de upload |
Problemas comuns e como resolvê-los
O arquivo é grande demais para e-mail ou formulário de upload
Esse é o problema mais comum. Para fotos e digitalizações, converter BMP para JPG costuma reduzir o tamanho em uma ordem de grandeza ou mais. Para capturas de tela, diagramas ou qualquer coisa com texto, converter BMP para PNG é melhor: o PNG também é sem perda, mas comprimido, e não adiciona o ruído que o JPG cria em bordas nítidas.
Um BMP de 32 bits aparece com fundo preto
O programa não reconhece ou lê errado o byte alfa. Converter para PNG geralmente resolve. Ao converter para JPG, que não tem transparência, as áreas transparentes são preenchidas com branco ou com uma cor que você escolher.
A imagem aparece de cabeça para baixo ou distorcida
Em um leitor que você mesmo escreveu, isso geralmente vem de dois erros: ignorar que as linhas são gravadas de baixo para cima ou não pular os bytes de preenchimento no fim de cada linha. Usar a fórmula de stride acima e verificar o sinal da altura evita os dois.
Um programa se recusa a abrir um BMP
Arquivos BMP com compressão RLE, BI_BITFIELDS ou dados JPEG/PNG incorporados não são suportados por alguns leitores simples. Salvar de novo como BMP de 24 bits sem compressão ou converter para PNG elimina o problema de compatibilidade.
Dicas de conversão
- JPG para fotos, PNG para gráficos: a regra de sempre vale ao sair do BMP. Para a web, você também pode escolher WebP ou AVIF no conversor de imagens.
- Mantenha a qualidade alta: como o BMP é sem perda, uma qualidade de JPG de 85-90% dá um resultado difícil de distinguir do original.
- Reduza se precisar: se o arquivo ainda estiver grande, diminua as dimensões em pixels ou use comprimir imagem para chegar a um tamanho-alvo.
- No sentido inverso: se um dispositivo embarcado ou programa legado exige BMP, escolha BMP como destino no conversor de imagens. Nossas ferramentas gravam um BMP padrão de 24 bits sem compressão; as áreas transparentes são achatadas sobre a cor de fundo que você escolher.
Nossas páginas de conversão de BMP funcionam no seu navegador: o arquivo não é enviado e nunca sai do seu dispositivo.
Perguntas frequentes
BMP e DIB são a mesma coisa?
Na prática, sim. O DIB é a estrutura de bitmap independente de dispositivo que o Windows usa na memória e na área de transferência; um arquivo BMP é essa estrutura com um cabeçalho de arquivo de 14 bytes na frente.
O BMP é sem perda?
Sim. Arquivos BMP sem compressão e com compressão RLE mantêm os valores dos pixels exatamente. A única exceção é o raro BMP com dados JPEG incorporados.
Converter BMP para PNG perde qualidade?
Não. O PNG também é sem perda; a imagem continua idêntica e só fica menor porque é comprimida.
Posso usar BMP em um site?
Os navegadores exibem BMP, mas os arquivos são desnecessariamente grandes e deixam as páginas lentas. Use JPG, PNG, WebP ou AVIF na web.
O BMP suporta transparência?
Em teoria, um BMP de 32 bits pode ter canal alfa, mas os programas não o suportam de forma consistente. O PNG é a escolha mais segura sempre que você precisar de transparência.


