我正在尝试将值从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]设置为其他值)
我想念什么?谢谢
答案 0 :(得分:3)
API:扫描线数据在32位边界上对齐。
这就是原因...方法位()的Qt文档忘了提及它......