QImage:使用颜色表将灰度图转换为RGB

4
使用Qt,我想通过使用颜色表自定义转换规则将Format_Indexed8图像转换为Format_RGB30。我认为这应该很简单,因为QImage::convertToFormat可以接受一个颜色表作为参数,但我无法使其正常工作。
以下是我的代码:
QImage image = QImage(data, width, height, QImage::Format_Indexed8);
QVector<QRgb> colorTable(256);
for (int i = 0; i < 255; i++)
    colorTable[i] = qRgb(255 - i, i, i);
image = image.convertToFormat(QImage::Format_RGB30, colorTable);

这段代码给我提供了一张RGB格式的图片,但在视觉上与灰度图像相同。
2个回答

3

我认为在QImage::convertToFormat中,颜色表参数是将RGB转换为索引所必需的,而你正在进行另一种方式的转换。

我建议直接在索引文件(源文件)中使用QImage::setColorTable设置颜色表,然后仅传递格式参数调用convertToFormat

QImage image = QImage(data, width, height, QImage::Format_Indexed8);
image.setColorTable(colorTable);
image = image.convertToFormat(QImage::Format_RGB30);

0

自Qt 5.5(2015年7月发布)起,这并不是必需的。现在您可以使用 QImage :: Format_Grayscale8 。您的代码将简单地如下所示:

QImage image{data, width, height, QImage::Format_Grayscale8};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接