Почему изображение .bmp имеет два типа заголовков файлов?

Почему изображение .bmp имеет два типа заголовков файлов?

Недавно я открыл два одинаковых растровых изображения в Notepad++. Заголовок одного из них начинается с:

'Бмб' а другой с: 'Бм~'

Почему это?

решение1

Это не весь заголовок — на самом деле это полтора поля от заголовка.

Вот формат заголовкаиз Википедии:

Смещение дек. Размер Цель
0 2 байта Поле заголовка, используемое для идентификации файлов BMP и DIB, имеет вид 0x42 0x4D в шестнадцатеричном формате, как и BM в ASCII. Возможны следующие записи:
- BM- Windows 3.1x, 95, NT, ... и т. д.
- BA- OS/2 struct bitmap array
- CI- OS/2 struct color icon
- CP- OS/2 const color pointer
- IC- OS/2 struct icon
- PT- OS/2 pointer
2 4 байта Размер файла BMP в байтах
6 2 байта Зарезервировано; фактическое значение зависит от приложения, создающего изображение, если оно создано вручную, может быть равно 0
8 2 байта Зарезервировано; фактическое значение зависит от приложения, создающего изображение, если оно создано вручную, может быть равно 0
10 4 байта Смещение, т.е. начальный адрес байта, в котором находятся данные растрового изображения (массив пикселей).

BM— значение первого поля. Третий «символ» — это на самом деле первый байт из второго поля (размер BMP в байтах), неверно интерпретируемый как текст.

решение2

Потому что заголовок не является ни тем, ни другимБмбниБм~. ЭтоБМ. Ваши растровые изображения все-таки не были идентичны.

Это указано вСтруктура BITMAPFILEHEADER: «Тип файла; должен быть BM».

решение3

В заголовке первые 2 байта должны быть «BM», что у вас и есть.

Следующие 4 байта хранят размер файла, который, по совпадению, в вашем случае выглядит как «P» или «~».

Вы можете попробовать взять сырые байты в 4 местах и ​​рассчитать размер файла. Он должен соответствовать размеру файла на диске.

Либо используйте Image Tools для обработки заголовка и извлечения размера файла, а затем сравните.

Связанный контент