我在用
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
我在用
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
1.
请参阅以下文档QImage::setPixel
:
如果图像的格式是单色或 8 位,则给定的 index_or_rgb 值必须是图像颜色表中的索引,否则参数必须是 QRgb 值。
我假设您的图像既不是单色也不是 8 位,因此您需要获取QRgb
值(这是 typedef 的unsigned int
)。
2.
接下来,如果您查看QColor
文档,您会注意到应该使用(或者如果您在图像中使用 alpha 通道)获得QRgb
来自 a 的值。QColor
rgb()
rgba()
3.
请注意,QColor
不应使用new
. 它通常在堆栈上创建并按值传递。因此,您的代码应更正如下:
QColor c(185, 20, 120);
image.setPixel(i, i2, c.rgba());
另请注意,value()
它不会返回整个QColor
. 它只返回 HSV 表示的 3 个组成部分之一QColor
。这似乎value()
与您的用例完全无关。
这种方法可能有效,试试吧。
setPixel(x, y, qRgb(185, 20, 120));