Я работаю с монохромным растровым изображением, 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 пикселей, то n_nbPaddingBytes = 3.
Вопрос 2:
Помимо заполнения (00 00 00), у меня есть этот F0
байт, предшествующий трем байтам заполнения в каждой строке. В результате в правой части изображения появляется черная вертикальная линия шириной 4 пикселя.
Примечание 1. Я манипулирую изображением перед его печатью на принтере Zebra (я переворачиваю изображение по вертикали и меняю цвета: в основном черный пиксель становится белым и наоборот).
Примечание 2. Когда я открываю оригинальное изображение BMP с помощью Paint, у него нет такой черной вертикальной линии с правой стороны.
Есть ли причина, по которой этот байт 0xF0 присутствует в конце каждой строки?
Спасибо за помощь. С наилучшими пожеланиями.