Я работаю с монохромным растровым изображением, 1 бит на пиксель.Монохромный битмап (1 бит) Заполнение и дополнительный 0xF0 байт
Когда я просматриваю файл с шестнадцатеричным редактором, я замечаю, что каждая строка заканчивается следующей шестнадцатеричной последовательностью: f0 00 00 00
.
Изучив проблему немного, я пришел к выводу, что три последних байта 00 00 00
соответствуют заполнению строки.
Вопрос 1:
Я хотел бы знать, если следующий алгоритм для определения количества заполняющих байтов в случае 1 ББП BMP изображение правильно:
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 присутствует в конце каждой строки?
Благодарим за помощь. С уважением.
Благодарим вас за ответ. В самом деле? Количество байтов для заполнения может быть плавающей? Поэтому я предполагаю, что алгоритм, который я предлагаю, неверен, не так ли? –
Нет, я считаю эффективными байты заполнения - ваши 100 пикселей занимают 100 бит = 12 1/2 байта, поэтому я написал около 3.5 – MBo