Saltar al contenido principal

Formatos de archivo

¿Qué es BMP? El formato de mapa de bits explicado

BMP es el formato de mapa de bits de Windows, sin compresión y sin pérdida. Te explicamos su estructura de cabeceras, las profundidades de color, sus limitaciones y cómo reducir el tamaño de los archivos.

Autor: Hemen Dönüştür Editör EkibiPublicado: 9 min de lectura

Portada de la guía del formato BMP

BMP es uno de los formatos de imagen más antiguos y sencillos del mundo Windows. Un archivo BMP suele escribir los píxeles en disco fila a fila, sin ningún tipo de compresión. Esa sencillez lo hace fácil de leer y sin pérdida, y esa misma sencillez hace que los archivos sean enormes. En este artículo verás de dónde viene BMP, qué hay dentro del archivo, los detalles de la profundidad de color y la transparencia, dónde te lo sigues encontrando hoy y cómo convertir archivos BMP a formatos más prácticos.

¿Qué es BMP?

BMP (bitmap o mapa de bits, extensión .bmp) es un formato de imagen rasterizada, basado en píxeles. La documentación técnica también lo llama DIB, mapa de bits independiente del dispositivo. «Independiente del dispositivo» significa que la imagen se puede interpretar igual sea cual sea la tarjeta gráfica o la impresora con la que se creó: el archivo lleva en su propia cabecera y en su tabla de colores la información necesaria para decodificar los colores.

Según la documentación Win32 de Microsoft, un archivo de mapa de bits empieza con una estructura BITMAPFILEHEADER, seguida de una BITMAPINFOHEADER, BITMAPV4HEADER o BITMAPV5HEADER, después una tabla de colores opcional y, por último, los datos de los píxeles. El tipo MIME es image/bmp.

Breve historia: de Windows y OS/2 hasta hoy

BMP surgió del trabajo conjunto de Microsoft e IBM en Windows y OS/2 a finales de los años ochenta. Los mapas de bits de la época de Windows 1.0 dependían mucho del dispositivo de salida; la forma independiente del dispositivo se generalizó con Windows 3.0 en 1990. La cabecera BITMAPCOREHEADER de 12 bytes, definida para OS/2 Presentation Manager, es la razón por la que todavía se habla de archivos «BMP de OS/2».

Con los años, el formato se amplió añadiendo campos al final de la cabecera. Según la descripción del formato de la Library of Congress, la versión 5 llegó con Windows 98 en 1998 y permitió registrar perfiles de color ICC en el archivo. Los tamaños de cabecera más comunes hoy son:

CabeceraTamañoPrincipal novedad
BITMAPCOREHEADER12 bytesEstructura básica compatible con OS/2 1.x
BITMAPINFOHEADER40 bytesLa cabecera más habitual, desde Windows 3.0; campos de compresión y resolución
BITMAPV4HEADER108 bytesMáscaras de color, máscara alfa e información del espacio de color
BITMAPV5HEADER124 bytesPerfiles ICC incrustados o enlazados, intención de representación

Los lectores detectan qué cabecera se usa a partir del valor de tamaño de su primer campo. Así, el software antiguo puede ignorar los campos nuevos y seguir leyendo lo básico.

Dentro de un archivo BMP

Cabecera de archivo y la firma «BM»

Todo archivo BMP empieza con una cabecera de archivo de 14 bytes, y sus dos primeros bytes son los caracteres ASCII BM (42 4D en hexadecimal). La cabecera guarda el tamaño total del archivo y la posición en bytes donde empiezan los datos de los píxeles. Un DIB colocado en el portapapeles de Windows (el formato CF_DIB) omite esos 14 bytes y empieza directamente con la cabecera de información.

Cabecera de información

La cabecera de información contiene el ancho, el alto, los bits por píxel (biBitCount), el tipo de compresión, la resolución horizontal y vertical (en píxeles por metro) y el número de colores usados en la tabla de colores.

Tabla de colores (paleta)

En las imágenes de 8 bits por píxel o menos, un píxel no es un color, sino un índice de la tabla de colores. En el ejemplo de la documentación de Microsoft, un mapa de bits de 32x32 con 16 colores tiene una matriz de píxeles de 32 x 32 x 4 = 4096 bits, porque bastan 4 bits para direccionar 16 colores.

Datos de píxeles: filas de abajo arriba y alineación de 4 bytes

BMP tiene dos rasgos poco habituales. Primero, si la altura es positiva, las filas se guardan de abajo arriba: la primera fila del archivo es la fila inferior de la imagen. Una altura negativa guarda las filas de arriba abajo, pero esas imágenes no se pueden comprimir. Segundo, cada fila se rellena hasta un múltiplo de 4 bytes. Microsoft da la longitud de fila (stride) así:

stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride

En una imagen de 1920x1080 a 24 bits, cada fila ocupa 1920 x 3 = 5.760 bytes (ya es múltiplo de 4), así que los datos de píxeles suman 5.760 x 1.080 = 6.220.800 bytes. Con los 54 bytes de cabeceras, el archivo ocupa unos 6,2 MB. La misma imagen en JPG suele ocupar una pequeña fracción de eso.

Profundidad de color, compresión y transparencia

La documentación de BITMAPV5HEADER define 1, 4, 8, 16, 24 y 32 bits por píxel (un valor de 0 significa que la profundidad la determinan los datos JPEG o PNG incrustados). 1 bit es blanco y negro, 4 bits son 16 colores y 8 bits, una paleta de 256 colores. A 24 bits, cada píxel ocupa tres bytes en el orden azul, verde, rojo.

El campo de compresión puede tomar estos valores:

  • BI_RGB: sin compresión. En la práctica, la inmensa mayoría de los archivos BMP.
  • BI_RLE8 y BI_RLE4: codificación simple por longitud de series (RLE) para imágenes con paleta de 8 y 4 bits. Útil para grandes zonas planas, casi inútil para fotos.
  • BI_BITFIELDS: no es compresión; unas máscaras indican dónde están los bits de rojo, verde y azul en los píxeles de 16 y 32 bits (por ejemplo, RGB 565).
  • BI_JPEG y BI_PNG: permiten datos JPEG o PNG dentro del mapa de bits. Los visores de uso general rara vez los admiten.

La transparencia es el terreno más incoherente de BMP. La máscara alfa de las cabeceras V4 y V5 puede definir el cuarto byte de un píxel de 32 bits como opacidad, pero en un BMP clásico de 32 bits ese byte se describe como no utilizado y muchos programas lo ignoran. Por eso no es raro que un BMP de 32 bits se vea transparente en un programa y sobre fondo negro en otro. Si necesitas transparencia, PNG es una opción mucho más segura.

Compatibilidad en sistemas, navegadores y programas

BMP se abre casi en cualquier sitio. Los visores integrados de Windows y Paint, Vista Previa de macOS y los visores habituales de Linux lo leen. La guía de formatos de imagen de MDN indica compatibilidad con BMP en todas las versiones de Chrome, Edge, Firefox, Opera y Safari. La misma guía subraya también que los archivos BMP sin comprimir son muy grandes en comparación con PNG o JPG y que, en general, conviene evitarlos para el contenido de los sitios web.

¿Dónde se usa BMP hoy?

  • Recursos de aplicaciones Windows y software antiguo: imágenes de barras de herramientas, gráficos de asistentes de instalación y algunos recursos de videojuegos siguen siendo BMP.
  • Sistemas embebidos y microcontroladores: un dispositivo con pantalla no necesita decodificador JPEG; los datos de píxeles se pueden copiar directamente a la pantalla.
  • Cámaras industriales, escáneres y herramientas de prueba: cuando se necesita una salida en bruto y sin pérdida, BMP es un formato intermedio sencillo.
  • Docencia: con una cabecera de solo unas decenas de bytes, BMP suele ser el primer formato que los estudiantes leen y escriben en los cursos de procesamiento de imágenes.

Puntos fuertes y débiles

Puntos fuertesPuntos débiles
Sin pérdida; los valores de los píxeles nunca cambianSin compresión, así que los archivos son muy grandes
Trivial de leer y escribir, sin coste de CPUCompatibilidad irregular con la transparencia
Se abre en casi todos los sistemas operativos y navegadoresEscasa compatibilidad con metadatos (EXIF, descripciones)
Los modos con paleta van bien en dispositivos con pocos recursosPoco práctico para la web, el correo y los formularios de subida

Problemas habituales y cómo resolverlos

El archivo es demasiado grande para el correo o un formulario de subida

Es el problema más común. Para fotos y escaneos, convertir BMP a JPG suele reducir el tamaño en un orden de magnitud o más. Para capturas de pantalla, diagramas o cualquier cosa con texto, es mejor convertir BMP a PNG: PNG también es sin pérdida, pero comprimido, y no añade el ruido que JPG crea alrededor de los bordes nítidos.

Un BMP de 32 bits muestra el fondo negro

El programa no reconoce el byte alfa o lo interpreta mal. Convertir a PNG suele solucionarlo. Al convertir a JPG, que no tiene transparencia, las zonas transparentes se rellenan de blanco o del color que elijas.

La imagen aparece invertida o torcida

En un lector programado por tu cuenta, esto suele deberse a dos errores: ignorar que las filas se guardan de abajo arriba o no saltarse los bytes de relleno al final de cada fila. Usar la fórmula de stride anterior y comprobar el signo de la altura evita ambos.

Un programa se niega a abrir un BMP

Algunos lectores sencillos no admiten archivos BMP con compresión RLE, BI_BITFIELDS o datos JPEG/PNG incrustados. Volver a guardarlo como BMP de 24 bits sin comprimir o convertirlo a PNG elimina el problema de compatibilidad.

Consejos de conversión

  • JPG para fotos, PNG para gráficos: la regla de siempre también vale al salir de BMP. Para la web también puedes elegir WebP o AVIF en el conversor de imágenes.
  • Mantén la calidad alta: como BMP es sin pérdida, una calidad JPG del 85-90 % da un resultado difícil de distinguir del original.
  • Reduce si hace falta: si el archivo sigue siendo grande, reduce las dimensiones en píxeles o usa comprimir imagen para llegar a un tamaño objetivo.
  • En sentido contrario: si un dispositivo embebido o un programa antiguo necesita BMP, elige BMP como destino en el conversor de imágenes. Nuestras herramientas escriben un BMP estándar de 24 bits sin comprimir; las zonas transparentes se aplanan sobre el color de fondo que elijas.

Nuestras páginas de conversión de BMP funcionan en tu navegador: el archivo no se sube y nunca sale de tu dispositivo.

Preguntas frecuentes

¿BMP y DIB son lo mismo?

En la práctica, sí. Un DIB es la estructura de mapa de bits independiente del dispositivo que Windows usa en memoria y en el portapapeles; un archivo BMP es esa estructura con una cabecera de archivo de 14 bytes delante.

¿BMP es sin pérdida?

Sí. Los archivos BMP sin comprimir y los comprimidos con RLE conservan exactamente los valores de los píxeles. La única excepción es el raro BMP con datos JPEG incrustados.

¿Se pierde calidad al convertir BMP a PNG?

No. PNG también es sin pérdida; la imagen queda idéntica y solo se hace más pequeña porque se comprime.

¿Puedo usar BMP en un sitio web?

Los navegadores muestran BMP, pero los archivos son innecesariamente grandes y ralentizan las páginas. Para la web, usa JPG, PNG, WebP o AVIF.

¿BMP admite transparencia?

En teoría, un BMP de 32 bits puede llevar canal alfa, pero los programas no lo admiten de forma coherente. Siempre que necesites transparencia, PNG es la opción más segura.

Fuentes

Conversores relacionados

Todos los artículos