Растровое изображение BMP (.bmp)
Архитектура СтандартBitmap Image File (BMP): это основной формат растровой графики Microsoft, независимый от устройства, который хранит несжатые строки развертки или строки с RLE-сжатием и напрямую совместим с аппаратным буфером кадра.
Конвертировать из BMP в PNG
Бесплатный конвертер из BMP в PNG прямо в браузере. Конвертируйте файлы мгновенно на Вашем устройстве.
Анализ и метаданные
Операционные системы и анализаторы файлов идентифицируют файлы BMP по начальной двоичной последовательности байтов:
Сигнатура заголовка на уровне байтов (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 (Текущий) | PNG | TIFF | JPG |
|---|---|---|---|---|
| Режим сжатия | Без сжатия / минимальное RLE | Deflate без потерь (примерно на 70% меньше) | Без сжатия / LZW / Zip | С потерями DCT (на ~90% меньше) |
| Скорость декодирования | Мгновенное копирование памяти | Требуется декомпрессия Deflate | Требуется декомпрессия LZW/ZIP | Требуется расчет IDCT |
| Порядок строк развертки | Снизу вверх (инвертированный) | Сверху вниз | Сверху вниз / полосы | Блоки MCU сверху вниз |
| Пригодность для веб | Очень низкая (раздутый объем данных) | Отлично подходит для графики | Низкая (настольные издательские системы) | Отлично подходит для фотографий |
Распространенные сценарии повреждения и руководство по восстановлению в HEX
Изображение выглядит перекошенным: строки смещены по диагонали.
Первопричина: Неправильный расчет выравнивания строк (ошибка заполнения каждой строки развертки до 4-байтовой границы).
Восстановление: Перекодируйте файл с помощью File2File.app Image Converter, чтобы восстановить правильный 32-битный шаг строки развертки.
Анализ безопасности и векторы атак на парсер
Декодеры BMP часто страдают от чтения за пределами буфера при выделении памяти на основе ненадежных размеров из заголовка DIB.
Известные векторы атак
- Переполнение целых чисел при вычислении ширина * высота * глубина цвета (bpp), приводящее к выделению маленького блока в куче и записи за пределы буфера.
- Поврежденные последовательности длин серий RLE8/RLE4, вызывающие запись в память за пределами выделенного буфера.
- Отказ в обслуживании за счет выделения многогигабайтных объемов памяти, инициированного специально измененными размерами в заголовке.
Лучшие практики защиты: Строго проверяйте ширину, высоту и глубину цвета в заголовке DIB перед выделением целевой памяти.
История происхождения и ключевые этапы
Ключевые преимущества и плюсы
- Нулевое ухудшение от сжатия: 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% без ухудшения качества изображения.
Связанные конвертации для BMP
Преобразование несжатых растровых изображений Windows в PNG обеспечивает сжатие без потерь, уменьшая размер файлов без ухудшения качества изображения.
Преобразование графики Portable Network Graphics в растровый формат Windows превращает сжатые растровые данные в несжатую сетку пикселей для устаревших операционных систем и аппаратных конвейеров.
Разместите поддерживаемый снимок экрана в формате BMP на одной странице PDF для заявки или отчета. Этот способ принимает несжатые 24-битные или 32-битные пиксели, но не сжатые варианты BMP.