Enviar um arquivo
  1. base64hub
  2. Ferramentas de imagem
  3. Base64 para BMP

Base64 para BMP

Cole o Base64 de um BMP ou um URI data:image/bmp para ver o bitmap e salvar como .bmp. Bitmaps não têm compressão, então o cabeçalho diz exatamente qual deve ser o tamanho do arquivo.

Grátis sem cadastro, sem limites Local nada é enviado Atualizado 27 de out. de 2026
Entrada –Saída –Tamanho –

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como converter Base64 para BMP

  1. Cole o Base64 ou o URI data:image/bmp;base64,... completo, ou abra um arquivo .txt com a string. Strings de vários megabytes são normais para bitmaps e não são problema aqui.
  2. A linha de status deve mostrar Detectado BMP. A prévia exibe a imagem e o tamanho em pixels; Tamanho dá o tamanho do arquivo decodificado em bytes.
  3. Clique em Baixar arquivo para salvar o .bmp.

Os navegadores decodificam BMP em um <img>, incluindo arquivos monocromáticos de 1 bit, de paleta de 8 bits, de 24 bits e a maioria dos de 32 bits.

Tamanho do BMP pela largura e altura

Um BMP tem um cabeçalho de arquivo de 14 bytes, um cabeçalho de informações (40 bytes na versão comum), uma paleta opcional e depois as linhas de pixels. Cada linha é completada até um múltiplo de 4 bytes. Para uma imagem de 24 bits sem paleta:

file size = 54 + height × (width × 3, rounded up to a multiple of 4)
ImagemTamanho da linhaArquivo BMPComprimento em Base64
33×10, 24-bit99 → 100 bytes1,054 bytes1,408 chars
100×100, 24-bit300 bytes30,054 bytes40,072 chars
800×600, 24-bit2,400 bytes1,440,054 bytes1,920,072 chars
1920×1080, 24-bit5,760 bytes6,220,854 bytes8,294,472 chars
1920×1080, 1-bit240 bytes259,262 bytes345,684 chars

A linha de 1 bit acrescenta uma paleta de 8 bytes com duas cores. Como os números são fixos, um bitmap é fácil de verificar: o cabeçalho do arquivo guarda o tamanho total nos bytes 2 a 5. No dump hex do exemplo de 100×100, eles aparecem como 66 75 00 00, que é 0x7566 = 30.054 como número little-endian. Se Tamanho mostrar menos que isso, o Base64 foi truncado. As linhas de um BMP são gravadas de baixo para cima por padrão, então um bitmap cortado perde a parte de cima da imagem.

Como é o Base64 de um BMP

Todo BMP começa com as letras BM, então o Base64 começa com Qk. O terceiro caractere depende do tamanho do arquivo e é 0, 1, 2 ou 3; Qk02 e Qk1m são típicos. O detector também confere o tamanho do cabeçalho de informações no byte 14, então dados aleatórios que por acaso começam com BM não são confundidos com um bitmap.

Bitmaps sem cabeçalho (DIB)

Algumas fontes entregam o bitmap sem o cabeçalho de arquivo BM. Isso é um DIB, o formato da área de transferência do Windows (CF_DIB), das imagens dentro de arquivos ICO e de alguns SDKs de dispositivos. O Base64 dele começa com KAAAA, a codificação do tamanho do cabeçalho de informações de 40 bytes, 28 00 00 00.

A ferramenta não consegue mostrar a prévia, já que sem o cabeçalho de arquivo os bytes não formam um arquivo de imagem válido, e indica dados binários. A solução é colocar os 14 bytes que faltam na frente:

import base64, struct

def dib_to_bmp(dib: bytes) -> bytes:
    header_size, = struct.unpack_from("<I", dib, 0)
    bpp, = struct.unpack_from("<H", dib, 14)
    compression, colors = struct.unpack_from("<I", dib, 16)[0], struct.unpack_from("<I", dib, 32)[0]
    if bpp <= 8 and colors == 0:
        colors = 1 << bpp
    masks = 12 if header_size == 40 and compression == 3 else 0
    offset = 14 + header_size + masks + colors * 4
    return b"BM" + struct.pack("<IHHI", 14 + len(dib), 0, 0, offset) + dib

b64 = open("dib.txt").read()
with open("image.bmp", "wb") as f:
    f.write(dib_to_bmp(base64.b64decode(b64)))

O cabeçalho precisa do tamanho total do arquivo e do offset dos dados de pixels, que vêm depois do cabeçalho de informações, das máscaras de cor das imagens bitfield de 16 e 32 bits e da paleta. Codifique o resultado de novo com BMP para Base64 se precisar dele como texto, ou confira aqui. DIBs de arquivos ICO são um caso especial: a altura deles é dobrada para dar espaço a uma máscara de transparência. Base64 em Python tem mais sobre decodificação de dados binários.

Problemas comuns

  • “Isto parece ser PNG, não BMP”. O remetente já converteu a imagem, ou o sistema só a chama de bitmap. Salve como PNG com Baixar como .png; é menor e todo programa lê.
  • As cores aparecem trocadas ou a imagem fica de cabeça para baixo em outro programa. O BMP guarda os pixels como azul-verde-vermelho e normalmente de baixo para cima. Uma altura negativa no cabeçalho indica linhas de cima para baixo. Os navegadores lidam com tudo isso; leitores simples feitos sob medida às vezes não.
  • Um dispositivo rejeita o arquivo decodificado. Compare o SHA-256 com o que o dispositivo recebeu e depois confira a profundidade de bits e a versão do cabeçalho no dump hex. Leitores mais antigos esperam um cabeçalho de 40 bytes (28 00 00 00 no offset 14) e nenhum canal alfa.

Perguntas frequentes

Por que a string Base64 do meu bitmap é tão longa?

O BMP guarda os pixels brutos, sem compressão. Um bitmap de 1920×1080 com 24 bits tem 6.220.854 bytes, o que dá 8.294.472 caracteres de Base64, não importa o que a imagem mostre.

Meu Base64 começa com KAAAA em vez de Qk. O que é isso?

Um bitmap sem o cabeçalho de arquivo de 14 bytes, chamado DIB. Ele vem da área de transferência do Windows, de alguns SDKs de dispositivos e de arquivos ICO. Acrescente o cabeçalho com o trecho de Python desta página e ele vira um .bmp normal.

Como saber se uma string BMP está completa?

Os bytes 2 a 5 do arquivo guardam o tamanho total. Abra Mostrar dump hex, leia esses bytes como número little-endian e compare com a linha Tamanho. Se o tamanho decodificado for menor, a string foi cortada.

Dá para obter um PNG em vez de BMP?

Esta página salva o bitmap como ele é. Para converter, baixe e arraste para BMP para Base64 com Converter para PNG; o PNG não tem perdas e costuma ser bem menor.