Загрузить файл
  1. base64hub
  2. Инструменты для изображений
  3. Base64 в BMP

Base64 в BMP

Вставьте Base64 картинки BMP или URI data:image/bmp, чтобы посмотреть изображение и сохранить его как .bmp. BMP не сжимается, поэтому по заголовку точно видно, какого размера должен быть файл.

Бесплатно без регистрации и ограничений Локально ничего не загружается Обновлено 27 окт. 2026 г.
Ввод –Результат –Размер –

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как перевести Base64 в BMP

  1. Вставьте Base64 или полный URI data:image/bmp;base64,... либо откройте файл .txt со строкой. Для BMP строки в несколько мегабайт – обычное дело, и инструмент с ними справляется.
  2. В строке статуса должно быть Определено: BMP. Превью показывает изображение и его размер в пикселях, а Размер – размер декодированного файла в байтах.
  3. Нажмите Скачать файл, чтобы сохранить .bmp.

Браузеры показывают BMP в <img>, включая 1-битные монохромные, 8-битные с палитрой, 24-битные и большинство 32-битных файлов.

Размер предсказуем

У BMP есть 14-байтовый заголовок файла, информационный заголовок (40 байт в самой распространённой версии), необязательная палитра и затем строки пикселей. Каждая строка дополняется до кратного 4 числа байтов. Для 24-битного изображения без палитры:

file size = 54 + height × (width × 3, rounded up to a multiple of 4)
ИзображениеРазмер строкиФайл BMPДлина Base64
33×10, 24 бита99 → 100 байт1 054 байта1 408 символов
100×100, 24 бита300 байт30 054 байта40 072 символа
800×600, 24 бита2 400 байт1 440 054 байта1 920 072 символа
1920×1080, 24 бита5 760 байт6 220 854 байта8 294 472 символа
1920×1080, 1 бит240 байт259 262 байта345 684 символа

В 1-битном варианте добавляется 8-байтовая палитра на два цвета. Раз числа фиксированы, BMP легко проверить: заголовок файла хранит общий размер в байтах со 2-го по 5-й. В hex-дампе примера 100×100 там стоит 66 75 00 00, то есть 0x7566 = 30 054 в порядке little-endian. Если Размер показывает меньше, Base64 обрезан. По умолчанию строки BMP хранятся снизу вверх, поэтому у обрезанной картинки пропадает верхняя часть.

Как выглядит BMP в Base64

Каждый BMP начинается с букв BM, поэтому Base64 начинается с Qk. Третий символ зависит от размера файла и бывает 0, 1, 2 или 3; типичные начала – Qk02 и Qk1m. Детектор также проверяет размер информационного заголовка в байте 14, чтобы случайные данные, которые начинаются с BM, не приняли за картинку.

BMP без заголовка (DIB)

Некоторые источники отдают изображение без заголовка файла BM. Это DIB: так хранят изображения буфер обмена Windows (CF_DIB), файлы ICO и некоторые SDK устройств. Его Base64 начинается с KAAAA, так кодируется размер 40-байтового информационного заголовка 28 00 00 00.

Показать превью инструмент не может: без заголовка файла байты не складываются в корректное изображение, поэтому он сообщает о двоичных данных. Чтобы это исправить, допишите спереди 14 недостающих байтов:

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

Заголовку нужны общий размер файла и смещение пиксельных данных, которые идут после информационного заголовка, цветовых масок 16- и 32-битных изображений с битовыми полями и палитры. Если результат нужен в виде текста, закодируйте его снова через BMP в Base64 или проверьте здесь. DIB из файлов ICO – особый случай: высота в них удвоена, чтобы вместить маску прозрачности. Подробнее о декодировании двоичных данных рассказывает статья Base64 в Python.

Частые проблемы

  • «Похоже на PNG, а не на BMP». Отправитель уже сконвертировал изображение, или система просто называет его bitmap. Сохраните его кнопкой Скачать как .png: PNG меньше, и его откроет любая программа.
  • В другой программе перепутаны цвета или картинка перевёрнута. BMP хранит пиксели в порядке синий-зелёный-красный и обычно снизу вверх. Отрицательная высота в заголовке означает строки сверху вниз. Браузеры всё это учитывают, а простые самописные парсеры – не всегда.
  • Устройство не принимает декодированный файл. Сравните его SHA-256 с тем, что получило устройство, затем проверьте в hex-дампе глубину цвета и версию заголовка. Старые парсеры ждут 40-байтовый заголовок (28 00 00 00 по смещению 14) и отсутствие альфа-канала.

Вопросы и ответы

Почему строка Base64 с картинкой BMP такая длинная?

BMP хранит пиксели как есть, без сжатия. 24-битная картинка 1920×1080 занимает 6 220 854 байта, то есть 8 294 472 символа Base64, что бы на ней ни было изображено.

Мой Base64 начинается с KAAAA, а не с Qk. Что это?

Это bitmap без 14-байтового заголовка файла, так называемый DIB. Он встречается в буфере обмена Windows, некоторых SDK устройств и внутри файлов ICO. Добавьте заголовок скриптом на Python с этой страницы, и получится обычный .bmp.

Как понять, что строка BMP полная?

В байтах со 2-го по 5-й записан общий размер файла. Откройте Показать hex-дамп, прочитайте их как число little-endian и сравните со строкой Размер. Если декодированный размер меньше, строку обрезали.

Можно ли получить PNG вместо BMP?

Эта страница сохраняет картинку как есть. Чтобы конвертировать, скачайте её и перетащите в BMP в Base64, выбрав PNG в поле Конвертировать в; PNG не теряет качество и обычно намного меньше.