如何为QImage检测足够的格式(数据类型)以消耗最少的RAM

How to detect sufficient format(data type) for QImage to consume minimum RAM?

本文关键字:RAM 数据类型 格式 QImage 检测      更新时间:2023-10-16

如果我们在图像标题中没有任何关于Dpi或图像类型(RGB16或RGBA32或…(的信息,当我在Qt中的QImage中加载图像时,我希望使用最小RAM。

有什么想法、代码或方法可以自动检测QImage的图像类型,比如(QImage::Format_RGB32或QImage::Format_RGB16或…(?

QImage正在继承QPaintDevice。它不是图像的二进制格式,也不是包含或其他类似的内容。把它想象成一块内存,其中有一些方法和成员属性,可以解释该内存的内容,或者如何在该内存上绘制像素。例如,方法QImage::load将使用QImageReader实例加载一个图像文件,如JPG、PNG、BMP等,并初始化QImage保存该数据所需的一切。QImageReader可以自动检测图像格式。然后,您将能够使用QImage::convertToFormat方法转换此QImage实例。

QImage img;
img.load("/some/path/to/sample.png");
QImage converted = img.convertToFormat(QImage::Format_RGB16);