я пытаюсь скопировать значения из 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
в яве делаю)
Второе: при итерации по пикселям каждый четвертый (начиная с третьего — индексы 2,6,10 …) байт устанавливается на 173, а каждый четвертый (начиная с четвертого — индексы 3,7,11 …) байт установить на 186.
Другие байты правильно (??) установлены на 255 (белый).
Я ожидал 20 байтов, поэтому для 19 будет установлено 255, а для одного (с цветным пикселем [10,1] установлено другое значение)
Что я, миссис? Спасибо
API: данные строки сканирования выровнены по 32-битной границе.
Это было причиной … документация Qt метода bits () забыла упомянуть об этом …
Других решений пока нет …