-
Notifications
You must be signed in to change notification settings - Fork 1
BMP картинка палитры
HarpyWar edited this page Oct 23, 2014
·
5 revisions
В некоторых картах встречается некорректная bmp палитра. Она открывается через редактор карт Radiant, но после экспорта в bmp файл картинка не откроется ни одним редактором изображений, либо будет показано смещенное изображение с неправильными цветами.
Изучая формат BMP были найдены следующие моменты (на примере карты tourney0
):
- По смещению
0x02
неходится размер всего файла в байтах (0x01D636
) - По смещению
0x0A
неходится количество байтов от начала файла до начала самой картинки (0x0836
), это заголовок (54 байта) + мусор (дополнительные данные?) - По смещению
0x0E
находится размер BitmapInfoHeader. Если он равен 12 байтам, то ничего делать не нужно - это файл формата BMP Version 2. Там значения Width и Height имеют тип Short и занимают по 2 байта, а не по 4 (палитра в таком формате есть в карте castle-ctf) - По смещению
0x22
находится количество байт, которое занимает только сама картинка в этом файле (0x01CE00
)
Фишка в том, что в этой картинке числа по смещению 0x02
и 0x0A
почему-то неверные! Первое должно быть = 0x01D236
(размер файла), а второе 0x01D236 - 0x01CE00 = 0x0436
. Delphi их игнорирует, поэтому и показывает картинку нормально.
Чтобы исправить эту картинку, необходимо поменять 8 на 4 по смещению 0X0B
, и она станет нормально открываться. Желательно заменить ещё и неправильный размер файла в позиции 0x02
.