Subir un archivo
  1. base64hub
  2. Herramientas de imagen
  3. Base64 a BMP

Base64 a BMP

Pega el Base64 de un BMP o una URI data:image/bmp para ver el bitmap y guardarlo como .bmp. Los bitmaps no van comprimidos, así que el encabezado dice exactamente cuánto debería ocupar el archivo.

Gratis sin registro, sin límites Local no se sube nada Actualizado 27 oct 2026
Entrada –Salida –Tamaño –

Se procesa en tu navegador. Esta página no puede enviar tus datos a ninguna parte – cómo lo sabemos

Cómo convertir Base64 a BMP

  1. Pega el Base64 o la URI completa data:image/bmp;base64,..., o abre un archivo .txt con la cadena. Las cadenas de varios megabytes son normales en los bitmaps y aquí no dan problemas.
  2. La línea de estado debería decir Detectado BMP. La vista previa muestra la imagen y su tamaño en píxeles; Tamaño da el tamaño del archivo decodificado en bytes.
  3. Pulsa Descargar archivo para guardar el .bmp.

Los navegadores decodifican BMP en un <img>, incluidos los archivos monocromo de 1 bit, de paleta de 8 bits, de 24 bits y la mayoría de los de 32 bits.

Tamaño del archivo BMP a partir del ancho y el alto

Un BMP tiene un encabezado de archivo de 14 bytes, un encabezado de información (40 bytes en la versión habitual), una paleta opcional y después las filas de píxeles. Cada fila se rellena hasta un múltiplo de 4 bytes. Para una imagen de 24 bits sin paleta:

file size = 54 + height × (width × 3, rounded up to a multiple of 4)
ImagenTamaño de filaArchivo BMPLongitud Base64
33×10, 24 bits99 → 100 bytes1.054 bytes1.408 caracteres
100×100, 24 bits300 bytes30.054 bytes40.072 caracteres
800×600, 24 bits2.400 bytes1.440.054 bytes1.920.072 caracteres
1920×1080, 24 bits5.760 bytes6.220.854 bytes8.294.472 caracteres
1920×1080, 1 bit240 bytes259.262 bytes345.684 caracteres

La fila de 1 bit añade una paleta de dos colores de 8 bytes. Como las cifras son fijas, un bitmap es fácil de comprobar: el encabezado de archivo guarda el tamaño total en los bytes 2 a 5. En el volcado hex del ejemplo de 100×100 se lee 66 75 00 00, que es 0x7566 = 30.054 como número little-endian. Si Tamaño muestra menos, el Base64 estaba truncado. Las filas de un BMP se guardan por defecto de abajo arriba, así que un bitmap cortado pierde la parte superior de la imagen.

Cómo es el Base64 de un BMP

Todo BMP empieza por las letras BM, así que el Base64 empieza por Qk. El tercer carácter depende del tamaño del archivo y es 0, 1, 2 o 3; Qk02 y Qk1m son típicos. El detector también comprueba el tamaño del encabezado de información en el byte 14, para que unos datos aleatorios que por casualidad empiecen por BM no se tomen por un bitmap.

Bitmaps sin encabezado (DIB)

Algunas fuentes te entregan el bitmap sin el encabezado de archivo BM. Es un DIB, el formato del portapapeles de Windows (CF_DIB), de las imágenes dentro de los archivos ICO y de algunos SDK de dispositivos. Su Base64 empieza por KAAAA, la codificación del tamaño de encabezado de información de 40 bytes 28 00 00 00.

La herramienta no puede mostrar la vista previa, porque sin el encabezado de archivo los bytes no son un archivo de imagen válido, e indica que son datos binarios. La solución es poner delante los 14 bytes que faltan:

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)))

El encabezado necesita el tamaño total del archivo y el desplazamiento de los datos de píxeles, que van después del encabezado de información, de las máscaras de color de las imágenes bitfield de 16 y 32 bits y de la paleta. Vuelve a codificar el resultado con BMP a Base64 si lo necesitas como texto, o compruébalo aquí. Los DIB de archivos ICO son un caso especial: su altura está duplicada para dejar sitio a una máscara de transparencia. Base64 en Python explica más sobre la decodificación de datos binarios.

Problemas habituales

  • «Esto parece PNG, no BMP». El remitente ya convirtió la imagen, o el sistema solo la llama bitmap. Guárdala como PNG con Descargar como .png; ocupa menos y la lee cualquier programa.
  • En otro programa los colores salen cambiados o la imagen aparece al revés. BMP guarda los píxeles como azul-verde-rojo y normalmente de abajo arriba. Una altura negativa en el encabezado significa filas de arriba abajo. Los navegadores manejan todo esto; los lectores caseros sencillos a veces no.
  • Un dispositivo rechaza el archivo decodificado. Compara su SHA-256 con lo que recibió el dispositivo y después revisa la profundidad de bits y la versión del encabezado en el volcado hex. Los lectores antiguos esperan un encabezado de 40 bytes (28 00 00 00 en el desplazamiento 14) y ningún canal alfa.

Preguntas frecuentes

¿Por qué mi cadena Base64 de un bitmap es tan larga?

BMP guarda los píxeles en bruto, sin compresión. Un bitmap de 1920×1080 a 24 bits ocupa 6.220.854 bytes, que son 8.294.472 caracteres de Base64, muestre lo que muestre la imagen.

Mi Base64 empieza por KAAAA en lugar de Qk. ¿Qué es?

Un bitmap sin su encabezado de archivo de 14 bytes, lo que se llama DIB. Sale del portapapeles de Windows, de algunos SDK de dispositivos y de los archivos ICO. Añade el encabezado con el fragmento de Python de esta página y se convierte en un .bmp normal.

¿Cómo sé si una cadena BMP está completa?

Los bytes 2 a 5 del archivo guardan su tamaño total. Abre Mostrar volcado hex, léelos como número little-endian y compáralo con la fila Tamaño. Si el tamaño decodificado es menor, la cadena se cortó.

¿Puedo obtener un PNG en lugar de un BMP?

Esta página guarda el bitmap tal cual. Para convertirlo, descárgalo y suéltalo en BMP a Base64 con Convertir a PNG; PNG no tiene pérdida y suele ocupar mucho menos.