Растровое изображение BMP (.bmp)

Архитектура Стандарт

Bitmap Image File (BMP): это основной формат растровой графики Microsoft, независимый от устройства, который хранит несжатые строки развертки или строки с RLE-сжатием и напрямую совместим с аппаратным буфером кадра.

Конвертировать из BMP в PNG

Бесплатный конвертер из BMP в PNG прямо в браузере. Конвертируйте файлы мгновенно на Вашем устройстве.

Анализ и метаданные

Операционные системы и анализаторы файлов идентифицируют файлы BMP по начальной двоичной последовательности байтов:

Выберите или перетащите файлы сюда

Конфиденциально - файлы никогда не покидают ваше устройство

или вставьте Ctrl+V
Гарантия конфиденциальности без передачи по сети: 0 байт загружено на внешние серверы. Вся обработка выполнялась локально в песочнице Вашего браузера.

Сигнатура заголовка на уровне байтов (Magic Bytes)

Операционные системы и анализаторы файлов идентифицируют файлы BMP по начальной двоичной последовательности байтов:

HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):

42 4D

ПРЕДСТАВЛЕНИЕ ASCII: BM

Стандартизация: Архитектура независимых от устройства растровых изображений (DIB) Microsoft Windows

Технические спецификации

Архитектура контейнераЗаголовок BITMAPFILEHEADER, за которым следуют BITMAPINFOHEADER (DIB) и массив растровых пикселей
СжатиеНесжатые строки развертки или дополнительное кодирование длин серий BI_RLE8 / BI_RLE4
Порядок байтов (Endianness)Младший байт первым (Little-Endian, порядок Intel x86)
Цветовые пространстваЦветовое пространство RGB, зависящее от устройства, sRGB (внедренный заголовок BITMAPV5HEADER)
Каналы и структураМонохромное изображение с глубиной 1 бит, изображение с палитрой 4 или 8 бит, RGB 16 или 24 бит либо RGBA 32 бита
Максимальные размеры2 147 483 647 x 2 147 483 647 пикселей (знаковое 32-битное целое число)
ПрозрачностьАльфа-маска 32-bit BGRA поддерживается в современных форматах BITMAPV3HEADER и V5HEADER
Потоковая передача и прогрессивная загрузкаНепотоковый формат; строки развертки хранятся в перевернутом виде (снизу вверх), если высота не отрицательная

Техническая матрица сравнения: BMP с конкурентами

Технический атрибутBMP (Текущий)PNGTIFFJPG
Режим сжатияБез сжатия / минимальное RLEDeflate без потерь (примерно на 70% меньше)Без сжатия / LZW / ZipС потерями DCT (на ~90% меньше)
Скорость декодированияМгновенное копирование памятиТребуется декомпрессия DeflateТребуется декомпрессия LZW/ZIPТребуется расчет IDCT
Порядок строк разверткиСнизу вверх (инвертированный)Сверху внизСверху вниз / полосыБлоки MCU сверху вниз
Пригодность для вебОчень низкая (раздутый объем данных)Отлично подходит для графикиНизкая (настольные издательские системы)Отлично подходит для фотографий

Распространенные сценарии повреждения и руководство по восстановлению в HEX

Изображение выглядит перекошенным: строки смещены по диагонали.

Первопричина: Неправильный расчет выравнивания строк (ошибка заполнения каждой строки развертки до 4-байтовой границы).

Восстановление: Перекодируйте файл с помощью File2File.app Image Converter, чтобы восстановить правильный 32-битный шаг строки развертки.

Анализ безопасности и векторы атак на парсер

Декодеры BMP часто страдают от чтения за пределами буфера при выделении памяти на основе ненадежных размеров из заголовка DIB.

Известные векторы атак

  • Переполнение целых чисел при вычислении ширина * высота * глубина цвета (bpp), приводящее к выделению маленького блока в куче и записи за пределы буфера.
  • Поврежденные последовательности длин серий RLE8/RLE4, вызывающие запись в память за пределами выделенного буфера.
  • Отказ в обслуживании за счет выделения многогигабайтных объемов памяти, инициированного специально измененными размерами в заголовке.

Лучшие практики защиты: Строго проверяйте ширину, высоту и глубину цвета в заголовке DIB перед выделением целевой памяти.

История происхождения и ключевые этапы

1998Windows 98 представляет BITMAPV5HEADER, добавляя управление цветовыми профилями ICC и гамма-коррекцию.
1990Windows 3.0 стандартизирует спецификацию DIB BITMAPINFOHEADER во всей операционной системе.
1987Представлен в составе Windows 2.0 и OS/2 1.1 в качестве родного растрового формата отображения.

Ключевые преимущества и плюсы

  • Нулевое ухудшение от сжатия: 100% точное побитовое хранение пикселей без артефактов сжатия.
  • В Windows есть встроенный кодек BMP, а поддержка в других операционных системах и приложениях различается.
  • Элементарная сложность декодирования делает формат идеальным для встраиваемых микроконтроллеров и обучения программированию графики.

Технические ограничения и минусы

  • Огромный размер файлов из-за отсутствия современного энтропийного сжатия, такого как DEFLATE или кодирование Хаффмана.
  • Неэффективность для веб-передачи или распространения через мобильные сети.
  • Порядок строк развертки снизу вверх требует вертикального инвертирования строк в современных конвейерах графического рендеринга сверху вниз.

Интересные технические факты

  • По умолчанию BMP хранит строки изображения в порядке снизу вверх из-за математической декартовой системы координат, используемой в OS/2.
  • Если значение высоты в заголовке BMP установлено в отрицательное число, изображение декодируется в правильной ориентации (сверху вниз).
  • Каждая строка развертки в файле BMP должна быть выровнена нулями до числа байт, кратного 4 (выравнивание по 32-битной границе).

Часто задаваемые технические вопросы

Почему файлы BMP такие большие?

Файлы BMP сохраняют сырые, несжатые значения цветов для каждого отдельного пикселя, в то время как такие форматы, как PNG, сжимают эти данные без потери качества.

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

Да. 32-битные файлы BMP (использующие BITMAPV3HEADER или новее) могут хранить 8-битный альфа-канал, хотя поддержка различается в старых программах.

Как уменьшить размер файла BMP?

Преобразование BMP в PNG с помощью File2File.app обычно уменьшает размер файла на 60%: 85% без ухудшения качества изображения.