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

时间:2018-03-19 13:33:55

标签: qt colors qimage

使用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 个答案:

答案 0 :(得分:1)

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

我会尝试使用QImage::setColorTable直接在索引文件(源)中设置颜色表,然后只调用convertToFormat传递format参数:

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

答案 1 :(得分:0)

自Qt 5。5(2015年7月发布)以来,没有必要这样做。您现在可以使用QImage::Format_Grayscale8。你的代码很简单:

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