24-битное растровое изображение (.bmp) имеет заголовок 54 байтов.После этого идут пиксельные данные.На пиксель используются 3 байта: синий, зеленый, красный, в этом порядке.
Чтобы увидеть это, нарисуйте пиксельное изображение размером 1x1 и сделайте один пиксель синим.Если вы посмотрите файл .bmp в гекседиторе, вы увидите, что 55-й байт имеет значение FF (синий), а 2 после этого - 00 (без зеленого, без красного).Конечно, вы также можете увидеть это, если напишите программу на C, которая читает все байты.Если вы напечатаете значения от 55-го байта до конца, вы увидите то же самое.
Пиксельные данные должны быть выровнены, это называется шагом.Страйд рассчитывается следующим образом:
stride = (width * bpp) / 8;
В 3x3 bmp, шаг будет (3 * 24) / 8 = 9. Это значение должно быть округлено до числа, кратного 4 (12 в этомcase), поэтому вам нужно 3 дополнительных байта на строку, чтобы правильно выровнять биты.Таким образом, если все байты синего цвета, после 54 байтов у вас будет:
FF 00 00 FF 00 00 FF 00 00 00 00 00
FF 00 00 FF 00 00 FF 00 00 00 00 00
FF 00 00 FF 00 00 FF 00 00 00 00 00
Для 4x4 bmp, stepde = (4 * 24) / 8 = 12. 12 делится на 4, так что естьдополнительные байты не нужны.Для 5x5 bmp, stride = (5 * 24) / 8 = 15, поэтому для каждой строки требуется 1 дополнительный байт.
Чтобы узнать больше информации о формате файла bmp, ознакомьтесь с этой википедиейстраница .Надеюсь, это поможет!