Правильная формула шага для БИТМАП

Расчет поверхностного шага

В несжатом растровом изображении шаг
количество байтов, необходимое для начала одной строки пикселей
к началу следующего ряда.

Выше от Структура BITMAPINFOHEADER и имеет абсолютный смысл.

Этот же сайт дает следующую формулу для расчета шага:

Для несжатых форматов RGB минимальным шагом всегда является изображение
ширина в байтах, округленная до ближайшего DWORD. Вы можете использовать
Следующая формула для расчета шага:

шаг = ((((biWidth * biBitCount) + 31) & ~ 31) >> 3)

Предположим, что изображение шириной 600, высотой 800 и 1 бп

Я ожидаю, что шаг будет 600/8 = 75 … Но формула выше дает мне 76!

Я использовал (w + 7) / 8 и получить ожидаемые 75 …

Все еще видение вышеприведенной формулы, исходящей от Microsoft, вызывает у меня сомнения — верна ли эта формула?

2

Решение

75 не округляется до ближайшего DWORD. DWORD — 4 байта каждый. 76 является следующим по величине кратным 4.

Формула верна (округляется до следующего DWORD в битах перед делением, чтобы получить окончательный счетчик байтов). Вы, кажется, округляете только до ближайшего байта, что не одно и то же.

2

Другие решения


По вопросам рекламы [email protected]