QT从5.12版本开始,增加了QImage::Format_RGBX64、QImage::Format_RGBA64、QImage::Format_RGBA64_Premultiplied等一系列图像格式,使得显示16位位深色彩图像成为可能,读写16位tiff图像终于不用先放缩到8位再显示了(泪目);从5.13版本开始增加了QImage::Format_Grayscale16这种16位位深灰度图像格式。
构造图像
构造16位图像,原始数据应是ushort类型而不是8位图像时的uchar类型,单个色彩的范围为0~65535而不是之前的0~255。添加图像数据时,原本使用setPixelColor()设置QRgba64类型的色彩,发现程序的运行效率不高,构造图像的时间比较长。事实上,QT自己的官方文档都说了setPixelColor()是一个效率很低的函数,不建议使用它来构造图像。
QImage tempImg = QImage(width, height, QImage::Format_RGBX64);
int bitCount = 0,index= 0;
ushort nowColor;
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
//放缩数据到0~65535,orignalData为float类型
nowColor = (ushort)((orignalData[index] - limitMin) * 65535 / (limitMax - l