Монохромное растровое изображение (1 bbp) Заполнение и дополнительный байт 0xF0

Я работаю с монохромным растровым изображением, 1 бит на пиксель.

Когда я проверяю файл в шестнадцатеричном редакторе, я замечаю, что каждая строка заканчивается следующей шестнадцатеричной последовательностью: f0 00 00 00,

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

Вопрос 1:

Я хотел бы знать, корректен ли следующий алгоритм для определения количества байтов заполнения в случае изображения BMP 1 bbp:

if(((n_width % 32) == 0) || ((n_width % 32) > 24))
{
  n_nbPaddingBytes = 0;
}
else if((n_width % 32) <= 8)
{
  n_nbPaddingBytes = 3;
}
else if((n_width % 32) <= 16)
{
  n_nbPaddingBytes = 2;
}
else
{
  n_nbPaddingBytes = 1;
}

n_width ширина в пикселях изображения BMP.

Например, если n_width = 100 px, тогда n_nbPaddingBytes = 3.

Вопрос 2:

Помимо прокладки (00 00 00), у меня есть это F0 байт, предшествующий заполнению тремя байтами в каждой строке. Это приводит к черной вертикальной линии 4 пикселя на правой стороне изображения.

Примечание 1: я манипулирую изображением до его печати на принтере Zebra (я переворачиваю изображение по вертикали и меняю цвета: в основном черный пиксель становится белым, и наоборот).

Примечание 2: Когда я открываю исходное изображение BMP с помощью Paint, у него нет такой черной вертикальной линии с правой стороны.

Есть ли причина, по которой этот байт 0xF0 присутствует в конце каждой строки?

Спасибо за помощь. С наилучшими пожеланиями.

1 ответ

Решение

Биты, представляющие пиксели растрового изображения, упакованы в строки. Размер каждой строки округляется до кратного 4 байта (32-битный DWORD) путем заполнения.

RowSize = [(BitsPerPixel * ImageWidth + 31) / 32] * 4 (деление целое)

( Формат файла BMP)

Монохромное изображение с шириной = 100 имеет размер строки 16 байтов (128 бит), поэтому 3,5 байта служат для заполнения (второй фрагмент F0 и 00 00 00). F представляет 4 столбца изображения справа (белый для обычной палитры 0/1).

Другие вопросы по тегам