Формат BMP
Многобайтовые числа записываются в файле в обратном порядке (сначала младшие байты, потом старшие).
Структуры, хранящиеся в BMP-файле:
1. BITMAPFILEHEADER (заголовок)
Позиция в файле (hex) | Размер (байты) | Имя | Тип WinAPI | Описание |
00 | 2 | bfType | WORD | Отметка для отличия формата от других (сигнатура формата). Может содержать единственное значение 424D16 |
02 | 4 | bfSize | DWORD | Размер файла в байтах. |
06 | 2 | bfReserved1 | WORD | Зарезервированы и должны содержать ноль. |
08 | 2 | bfReserved2 | WORD | |
0A | 4 | bfOffBits | DWORD | Положение пиксельных данных относительно начала данной структуры (в байтах). |
2. BITMAPINFO (информация об изображении)
Позиция в файле (hex) | Позиция в структуре (hex) | Размер (байты) | Имя (версии 3/4/5) | Тип WinAPI | Описание |
0E | 00 | 4 | biSize | DWORD | Размер данной структуры в байтах, |
12 | 04 | 4 | biWidth | LONG | Ширина растра в пикселях. |
16 | 08 | 4 | biHeight | LONG | высота растра в пикселях |
1A | 0C | 2 | biPlanes | WORD | В BMP допустимо только значение 1. |
1C | 0E | 2 | biBitCount | WORD | Количество бит на пиксель |
3. Пиксельные данные
Положение пиксельных данных хранится в поле bfOffBits.
В 24-битном формате цветовые составляющие RGB записываются в обратном порядке, как и многобайтовые числа (B,G,R).
Длина строки пиксельных данных всегда кратна 4 байтам.
При необходимости в конце строки добавляются дополнительные нули.