2

我在用

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
4

2 回答 2

4

1.请参阅以下文档QImage::setPixel

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

我假设您的图像既不是单色也不是 8 位,因此您需要获取QRgb值(这是 typedef 的unsigned int)。

2.接下来,如果您查看QColor文档,您会注意到应该使用(或者如果您在图像中使用 alpha 通道)获得QRgb来自 a 的值。QColorrgb()rgba()

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

QColor c(185, 20, 120);
image.setPixel(i, i2, c.rgba());

另请注意,value()它不会返回整个QColor. 它只返回 HSV 表示的 3 个组成部分之一QColor。这似乎value()与您的用例完全无关。

于 2013-07-02T19:18:26.833 回答
1

这种方法可能有效,试试吧。

setPixel(x, y, qRgb(185, 20, 120));
于 2016-12-16T00:18:43.273 回答