Как QImage с Format_Mono хранит информацию?

Я пытаюсь скопировать значения из QImage в свою структуру изображения (из-за школьной работы), и я не могу понять, как хранятся пиксели

API говорит, что при использовании Format_Mono изображение сохраняется с использованием 1 бит на пиксель.

Я создал следующий код:

QImage image(10,10,QImage::Format_Mono); // create 10x10 image
image.fill(1); // whiten the image
QPainter p;
p.begin(&image);
p.setPen(QPen(QColor(Qt::black)));
p.drawPoint(10,1); // make ONE point black
p.end();
uchar* pixels = image.constBits();
int count = image.byteCount(); // returns 40 !!

Первое: я не понимаю, почему используется 40 байт (я ожидал, что 20 будет более чем достаточно - как это было бы BufferedImage в java)

Второе: при итерации по пикселям каждый четвертый (начиная с третьего - индексы 2,6,10 ...) байт устанавливается в 173, а каждый четвертый (начиная с четвертого - индексы 3,7,11 ...) байт равен установлен на 186. Остальные байты правильно (??) установлены на 255 (белые).

Я ожидал 20 байт, поэтому 19 будет установлено 255, а один (с цветным пикселем [10,1], установленным на другое значение)

Что я пропускаю? Спасибо


person Kousalik    schedule 24.05.2013    source источник


Ответы (1)


API: данные строки развертки выравниваются по 32-битной границе.

Это была причина ... документация Qt о методе bits () забыла упомянуть об этом ...

person Kousalik    schedule 24.05.2013