Что такое формат файла BMP?
.bmp - это файл изображения, в котором хранятся растровые данные, разработанный Microsoft (совместно с IBM для OS/2). Формат BMP почти всегда является несжатым, поэтому изображения высокого разрешения, сохраненные как файлы .bmp, имеют больший размер, чем файлы в сопоставимых форматах, таких как PNG или JPEG. Существует опциональное сжатие методом кодирования длин серий (RLE), но оно используется редко.
BMP способен хранить изображения с различной глубиной цвета:
- 1-битный монохромный (только черный и белый),
- 4-битный (16 различных цветов),
- 8-битный (256 различных цветов),
- 16-битный, 24-битный или 32-битный цвет (последний добавляет альфа-канал для прозрачности).
Структура файла
Каждый файл .bmp имеет раздел заголовка, который содержит информацию о глубине цвета, размере файла и смещении данных пикселей, за которым следует массив, представляющий пиксели растра. Строки хранятся снизу вверх и дополняются до 4-байтовых границ. Существует четыре версии заголовка DIB - BITMAPCOREHEADER, BITMAPINFOHEADER, BITMAPV4HEADER и BITMAPV5HEADER, последняя из которых добавляет встроенные цветовые профили ICC.
Безопасность и защита
РИСК: LOWBMP - это чистые данные пикселей без скриптов или макросов, поэтому сам формат представляет низкий риск. Единственные нюансы: исторически несколько ошибок в библиотеках изображений позволяли некорректным заголовкам BMP (огромные заявленные размеры, плохие серии RLE) вызывать сбои или переполнение парсеров, поэтому обновляйте программу просмотра; и избегайте перегруженных рекламой сайтов «бесплатных конвертеров BMP» - используйте вместо них IrfanView, GIMP, ImageMagick или Squoosh.
Детали формата
в двух словахПрограммы, открывающие файлы BMP
magick image.bmp image.png для конвертации из командной строки. Технические подробности
глубокая спецификация| MIME-тип | image/bmp (также image/x-bmp, image/x-ms-bmp) |
| Магические байты | 42 4D («BM») при смещении 0 |
| Порядок байтов | Little-endian |
| Сжатие | Обычно отсутствует (BI_RGB); опционально кодирование длин серий BI_RLE8 и BI_RLE4; редко BI_BITFIELDS, BI_JPEG, BI_PNG |
| Поддерживаемая глубина цвета | 1, 4, 8, 16, 24 или 32 бита на пиксель |
| Хранение строк пикселей | По умолчанию снизу вверх (последняя строка первой); отрицательное значение высоты указывает на хранение сверху вниз; каждая строка дополняется до 4-байтовой границы |
| Заголовок файла | BITMAPFILEHEADER - 14 байт; содержит сигнатуру BM, общий размер файла и смещение данных пикселей |
| Версии заголовка DIB | BITMAPCOREHEADER (12 байт), BITMAPINFOHEADER (40 байт), BITMAPV4HEADER (108 байт), BITMAPV5HEADER (124 байта); версия определяется по DWORD со смещением 0x0E |
| Альфа-канал | Поддерживается в 32-битном режиме через BITMAPV4HEADER и BITMAPV5HEADER; недоступен в 24-битных или более ранних версиях заголовков |
| Максимальные размеры изображения | До ~2,1 миллиарда пикселей на сторону (32-битное целое со знаком в BITMAPINFOHEADER); BITMAPCOREHEADER ограничивает до 65 535 пикселей на сторону |
| Цветовая палитра | Опционально; до 256 записей RGBQUAD, используемых для индексных режимов (1, 4, 8 bpp) |
| Цветовой профиль ICC | Поддержка встроенных профилей ICC добавлена в BITMAPV5HEADER (Windows 98/2000); более ранние заголовки не содержат метаданных цветового пространства |
| Альтернативное расширение | .dib (Device Independent Bitmap) - идентичный формат, используется в Windows взаимозаменяемо |
| Варианты OS/2 | Файлы массивов растровых изображений OS/2 используют альтернативные магические сигнатуры: BA, CI, CP, IC, PT |
| Выпущен | 1985-1990 (Windows 1.0/2.0; OS/2 1.x); BITMAPINFOHEADER form with Windows 3.0 (1990) |
| Последняя версия | BITMAPV5HEADER (Windows 98/2000, 1998) - adds ICC color profiles |
| Открыть стандартное | Да · без роялти |
| Спецификация | learn.microsoft.com |
Конвертации BMP
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах BMP.