使用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格式的图像,但看起来与灰度图像相同。
答案 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};