带有Format_Mono的QImage如何存储信息?

时间:2013-05-24 09:53:53

标签: c++ qt qimage

我正在尝试将值从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个就足够了 - 就像java中的BufferedImage一样)

第二件事:当通过像素迭代时,每四分之一(从第三个开始 - 索引2,6,10 ......)字节设置为173并且每四分之一(从第四个开始 - 索引3,7,11 ... )byte设置为186。 其他字节正确(??)设置为255(白色)。

我预计有20个字节,所以19个将被设置为255,而一个(带有彩色像素[10,1]设置为其他值)

我想念什么?谢谢

1 个答案:

答案 0 :(得分:3)

API:扫描线数据在32位边界上对齐。

这就是原因...方法位()的Qt文档忘了提及它......