如何将rgb转换为uint index_or_rgb

时间:2013-07-02 17:17:28

标签: qt

我正在使用

QImage::setPixel(x, y, uint index_or_rgb); // http://qt-project.org/doc/qt-4.8/qimage.html#setPixel-2

但我不知道如何将rgb值转换为uint。如何将rgb值转换为uint?

QColor *c = new QColor(185, 20, 120);
image.setPixel(i, i2, c->value()); // this doesnt work

2 个答案:

答案 0 :(得分:3)

1.请参阅QImage::setPixel的文档:

  

如果图像的格式是单色或8位,则给定的index_or_rgb值必须是图像颜色表中的索引,否则参数必须是QRgb值。

我假设你的图像既不是单色也不是8位,所以你需要获得QRgb值(这是unsigned int的typedef)。

2.接下来,如果您查看QColor文档,您会注意到应使用QRgb(或{QColor获取rgb()的{​​{1}}值{1}}如果您在图片中使用Alpha通道。)

rgba()请注意,不应使用3.创建QColor。它通常在堆栈上创建并按值传递。因此,您的代码应更正如下:

new

另请注意,QColor c(185, 20, 120); image.setPixel(i, i2, c.rgba()); 不会返回整个value()的表示形式。它只返回QColor的HSV表示的3个组成部分之一。似乎QColor与您的用例完全无关。

答案 1 :(得分:1)

这种方式可能有效,只需尝试一下。

{{1}}