除QImage :: Format_Indexed8之外的QImage数组

时间:2015-11-20 13:34:04

标签: arrays qt rgb qimage

到目前为止,我有一个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,但还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

由于数据类型为unsigned char,因此无法直接将整数赋值。

    QColor(...).value();

返回int值。如果您创建int类型的数据,它将正确分配。