到目前为止,我有一个QImage
QImage::Format_Indexed8
。
我用所需的颜色data[y*width+x] = i
填充数组,一切正常。
但现在我需要RGB而不是Indexed8所以我使用QImage::Format_RGB32
。
分配记忆:
data = static_cast<unsigned char*>(malloc(sizeof(unsigned char)*4*HEIGHT*WIDTH));
为QImage
填充数组:data[(y*width+x)*4] = QColor(i, 0, 0).value();
嗯,图像似乎是正确的,但它是深蓝色而不是(浅色)红色! 怎么了?指数或颜色的计算?
我使用的是Qt 4.8.6
谢谢!
data[(y*width+x)*4] = 0x00;
data[(y*width+x)*4+1] = 0x00;
data[(y*width+x)*4+2] = i;
data[(y*width+x)*4+3] = 0xFF;
这样可行,所以我认为我的第一次尝试的问题必须是,我只写了第一个字符而不是全部4,但还有其他方法吗?
答案 0 :(得分:0)
由于数据类型为unsigned char,因此无法直接将整数赋值。
QColor(...).value();
返回int值。如果您创建int类型的数据,它将正确分配。