Растровое изображение 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) | С обратным порядком байтов (порядок байтов Intel x86) |
| Цветовые пространства | Цветовое пространство RGB, зависящее от устройства, sRGB (внедренный заголовок BITMAPV5HEADER) |
| Каналы и структура | 1-битный монохромный, 4-битный / 8-битный с палитрой, 16-битный, 24-битный RGB или 32-битный RGBA |
| Макс. габариты | 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 Image Converter, чтобы восстановить правильный 32-битный шаг строки развертки.
Анализ безопасности и векторы атак на парсер
Декодеры BMP часто страдают от чтения за пределами буфера при выделении памяти на основе ненадежных размеров из заголовка DIB.
Известные векторы атак
- Переполнение целых чисел при вычислении ширина * высота * глубина цвета (bpp), приводящее к выделению маленького блока в куче и записи за пределы буфера.
- Поврежденные последовательности длин серий RLE8/RLE4, вызывающие запись в память за пределами выделенного буфера.
- Отказ в обслуживании за счет выделения многогигабайтных объемов памяти, инициированного специально измененными размерами в заголовке.
Защитные лучшие практики: Строго проверяйте ширину, высоту и глубину цвета в заголовке DIB перед выделением целевой памяти.
Исторические истоки и вехи
Ключевые преимущества и плюсы
- Нулевое ухудшение от сжатия: 100% точное побитовое хранение пикселей без артефактов сжатия.
- Универсальная нативная поддержка операционной системы во всех версиях Windows, Linux и macOS.
- Элементарная сложность декодирования делает формат идеальным для встраиваемых микроконтроллеров и обучения программированию графики.
Технические ограничения и минусы
- Огромный размер файлов из-за отсутствия современного энтропийного сжатия, такого как 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 преобразует сжатые растровые данные в несжатую сетку пикселей для устаревших операционных систем и аппаратных конвейеров.