Конвертер BMP в Base64

Кодируйте точечные рисунки Windows (.bmp) в Base64. Поскольку BMP обычно не сжат, его можно сначала преобразовать в PNG, JPEG или WebP и получить гораздо более короткий результат.

Работает полностью в браузере. Данные никуда не загружаются.

Как пользоваться

  1. Перетащите файл .bmp в область загрузки, нажмите на неё, чтобы выбрать файл, или вставьте изображение.
  2. Выберите PNG в списке «Преобразовать в», чтобы получить результат без потерь и гораздо меньшего размера, или оставьте «Исходный формат», если принимающая система требует BMP.
  3. Сравните исходный размер с размером после кодирования, чтобы увидеть экономию.
  4. Скопируйте или скачайте результат в виде data URI, чистого Base64, тега img, правила CSS или изображения Markdown.

Что такое файл BMP?

BMP — формат аппаратно-независимых точечных рисунков Windows. Он хранит пиксели построчно, почти всегда без сжатия (для 4-битных и 8-битных изображений существует простой режим кодирования длин серий). Тип MIME — image/bmp, хотя некоторые системы сообщают image/x-ms-bmp, а результат Base64 начинается с Qk — это закодированные буквы BM.

Без сжатия размер файла напрямую зависит от размеров изображения. 24-битное изображение 800 на 600 пикселей занимает около 1,4 МБ, а его Base64 — почти 1,9 МБ текста.

Преобразуйте в PNG перед кодированием

PNG тоже хранит изображение без потерь, поэтому типичный 24-битный точечный рисунок после преобразования в PNG сохраняет пиксели в точности, а файл уменьшается — часто в несколько раз, а для скриншотов и плоской графики ещё сильнее. Для фотографий, сохранённых в BMP, JPEG или WebP с хорошим качеством дадут ещё более короткую строку. Исходный размер и размер после кодирования, показанные для каждого изображения, наглядно демонстрируют разницу.

Когда стоит оставить исходный BMP

Некоторые получатели ожидают настоящий точечный рисунок: старые программы для Windows, принтеры этикеток и чеков, небольшие дисплеи под управлением микроконтроллеров или тестовые данные, которые должны побайтно совпадать с файлом. В таких случаях не включайте преобразование; тогда результат Base64 будет точной копией файла. Все основные браузеры умеют показывать изображения data:image/bmp, но для веб-страниц и электронной почты лучше подходит PNG.

То же преобразование в скрипте на Python с библиотекой Pillow:

from PIL import Image
import base64, io

buf = io.BytesIO()
Image.open('scan.bmp').save(buf, 'PNG')
uri = 'data:image/png;base64,' + base64.b64encode(buf.getvalue()).decode()

Часто задаваемые вопросы

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

BMP хранит каждый пиксель без сжатия, а Base64 добавляет сверху ещё треть. Предварительное преобразование в PNG обычно резко сокращает строку без потери деталей.

Теряется ли качество при преобразовании BMP в PNG?

Нет. PNG — формат без потерь, поэтому пиксели остаются прежними. Меняется только способ их хранения.

Могут ли браузеры показывать data:image/bmp URI?

Да, Chrome, Edge, Firefox и Safari отображают BMP. Почтовые клиенты и многие онлайн-платформы работают с ним менее надёжно, поэтому там безопаснее использовать PNG.

Поддерживает ли BMP прозрачность?

32-битный BMP может хранить альфа-канал, но программы и браузеры обрабатывают его по-разному. Если нужна прозрачность, преобразуйте изображение в PNG или WebP.