Расчет поверхностного шага
В несжатом растровом изображении шаг
количество байтов, необходимое для начала одной строки пикселей
к началу следующего ряда.
Выше от Структура BITMAPINFOHEADER и имеет абсолютный смысл.
Этот же сайт дает следующую формулу для расчета шага:
Для несжатых форматов RGB минимальным шагом всегда является изображение
ширина в байтах, округленная до ближайшего DWORD. Вы можете использовать
Следующая формула для расчета шага:шаг = ((((biWidth * biBitCount) + 31) & ~ 31) >> 3)
Предположим, что изображение шириной 600, высотой 800 и 1 бп
Я ожидаю, что шаг будет 600/8 = 75 … Но формула выше дает мне 76!
Я использовал (w + 7) / 8
и получить ожидаемые 75 …
Все еще видение вышеприведенной формулы, исходящей от Microsoft, вызывает у меня сомнения — верна ли эта формула?
75 не округляется до ближайшего DWORD. DWORD — 4 байта каждый. 76 является следующим по величине кратным 4.
Формула верна (округляется до следующего DWORD в битах перед делением, чтобы получить окончательный счетчик байтов). Вы, кажется, округляете только до ближайшего байта, что не одно и то же.