Что такое формат файла DIB?
Расширение .dib обозначает Device Independent Bitmap - формат растровых изображений, разработанный Microsoft (совместно с IBM для OS/2), который лежит в основе обычного файла .bmp. Аппаратная независимость означает, что данные о цвете являются самоописываемыми: файл содержит собственную палитру или метаданные о глубине цвета, поэтому изображение отображается одинаково независимо от возможностей устройства вывода.
На диске файл .dib структурно идентичен файлу .bmp: за 14-байтовым заголовком BITMAPFILEHEADER (начинающимся с двухбайтовой сигнатуры BM) следует вариант заголовка DIB, необязательная цветовая палитра и массив необработанных пикселей. Самым распространенным заголовком является 40-байтовый BITMAPINFOHEADER, представленный в Windows 3.0 в 1990 году. Строки пикселей по умолчанию хранятся снизу вверх и выравниваются по 4-байтовым границам. Поддерживаемая глубина цвета варьируется от 1-битного монохромного до 32-битного RGBA (для альфа-канала требуются заголовки BITMAPV4HEADER или BITMAPV5HEADER).
В программировании Windows GDI термин DIB относится конкретно к структуре данных в памяти (BITMAPINFO + биты пикселей), в то время как .bmp - это форма файла на диске, в начало которой добавляется дополнительный 14-байтовый заголовок файла. Расширение .dib на диске встречается редко и полностью взаимозаменяемо с .bmp - любое приложение, открывающее файлы .bmp, также без проблем обрабатывает .dib.
Большинство файлов .dib используют несжатый режим BI_RGB. Дополнительное кодирование длин серий (BI_RLE8 для 8-битных, BI_RLE4 для 4-битных изображений) незначительно уменьшает размер файла. Поскольку формат по умолчанию не сжат, размеры файлов велики по сравнению с аналогами в форматах PNG или JPEG.
Безопасность и защита
РИСК: LOWDIB/BMP - это чистые пиксельные данные без скриптов или макросов, формат с низким уровнем риска. Исторические уязвимости парсеров (некорректные размеры заголовков, плохие RLE-последовательности) могли приводить к сбоям в старых библиотеках изображений, поэтому обновляйте ПО. Избегайте перегруженных рекламой сайтов «бесплатных конвертеров DIB»; используйте IrfanView, GIMP, ImageMagick или Squoosh.
Детали формата
в двух словахПрограммы, открывающие файлы DIB
Технические подробности
глубокая спецификация| Сигнатура файла | `BM` (hex `42 4D`) по смещению 0 - магические байты BITMAPFILEHEADER |
| Варианты заголовков | BITMAPCOREHEADER (12 байт, OS/2), BITMAPINFOHEADER (40 байт, Win3.0+), BITMAPV4HEADER (108 байт), BITMAPV5HEADER (124 байта, поддержка профилей ICC) |
| Поддерживаемая глубина цвета | 1, 4, 8, 16, 24 или 32 бита на пиксель; 1/4/8-битные используют индексированную палитру; 16/24/32-битные - прямой RGB |
| Альфа-канал | Поддерживается в 32-битных DIB с заголовками BITMAPV4HEADER или BITMAPV5HEADER (Windows 98/2000+) |
| Порядок строк пикселей | Снизу вверх по умолчанию (положительное значение высоты); отрицательная высота кодирует изображение сверху вниз |
| Выравнивание строк | Каждая строка пикселей дополняется до 4-байтовой границы (DWORD) |
| Режимы сжатия | `BI_RGB` (отсутствует, самый частый); `BI_RLE8` (8-битный RLE); `BI_RLE4` (4-битный RLE) |
| Цветовая палитра | Присутствует для 1/4/8-битных изображений в виде массива RGBQUAD; отсутствует для 16/24/32-битных изображений с прямым цветом |
| Порядок байтов | Little-endian (от младшего к старшему) |
| В памяти vs на диске | DIB в памяти не имеет 14-байтового BITMAPFILEHEADER; файл `.dib` на диске включает его и идентичен по структуре `.bmp` |
| Максимальные размеры | 32 767 × 32 767 пикселей с BITMAPINFOHEADER (32-битное знаковое поле); BITMAPCOREHEADER ограничен 16-битным беззнаковым значением (65 535 пикселей) |
| Метаданные разрешения | Горизонтальное и вертикальное разрешение хранится в пикселях на метр в полях `biXPelsPerMeter` и `biYPelsPerMeter` |
| Цветовой профиль ICC | Может быть встроен в BITMAPV5HEADER |
| Взаимозаменяемость | `.dib` полностью взаимозаменяем с `.bmp`; все приложения с поддержкой BMP открывают файлы `.dib` без модификаций |
| Выпущен | 1985 (Windows 1.0/2.0); modern BITMAPINFOHEADER form with Windows 3.0, 1990 |
| Последняя версия | BITMAPV5HEADER (Windows 98/2000, 1998) |
| Открыть стандартное | Да · без роялти |
| Спецификация | learn.microsoft.com |
Конвертации DIB
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DIB.