我正在使用
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
答案 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}}