C++ Qt读取多幅图像优化-如何只读取大小?

C++ Qt读取多幅图像优化-如何只读取大小?,c++,qt,C++,Qt,标题概括了这一点。如果我正在加载约200个不同大小的图像。如何只加载标题,以便知道每个图像的大小 目前,我发现将它们全部加载到内存中需要大量的cpu/内存和IO(我正试图从它们生成一个atlas) QImage似乎没有办法做到这一点QImageReader听起来像是我想要的,但这似乎仍然只是继续阅读整个图像,所以不确定它的目的是什么。是否有其他类或某种方法可以使用我提到的任何一个类来仅获取标题中的图像大小 如何只加载标题,以便知道每个图像的大小 显然,您似乎假设图像文件头(的前几个字节)包含图像

标题概括了这一点。如果我正在加载约200个不同大小的图像。如何只加载标题,以便知道每个图像的大小

目前,我发现将它们全部加载到内存中需要大量的cpu/内存和IO(我正试图从它们生成一个atlas)

QImage
似乎没有办法做到这一点
QImageReader
听起来像是我想要的,但这似乎仍然只是继续阅读整个图像,所以不确定它的目的是什么。是否有其他类或某种方法可以使用我提到的任何一个类来仅获取标题中的图像大小

如何只加载标题,以便知道每个图像的大小

显然,您似乎假设图像文件头(的前几个字节)包含图像的大小。这不是真的(至少不是所有图像格式类型)。我检查了一些格式(PNG)

目前我发现加载它们需要大量的cpu/内存和IO 在内存中只显示大小

正如您所提到的,您正试图一次加载约200张图像,以查找大小。这个设计看起来不太好,我们应该试着把我们的问题分解成更小的问题。因此,在这里,有效的方法可能是打开一个文件,找到存储在某个数据结构中的大小,然后关闭该文件。如果程序的其他部分需要将~200个图像加载到内存中,那么我们应该尝试思考如何避免它

QImage似乎没有办法做到这一点


由于似乎没有可移植/一致的方法来为所有类型的图像格式执行此操作,因此它没有。但是,如果您知道任何包含标题的文件格式,您可以编写小助手函数,该函数可以打开文件并读取标题并查找大小。但是这个helper函数对于特定类型的图像格式来说非常特殊,我们可能需要编写不同的逻辑来读取标题(所有图像格式都有不同的标题大小和信息)。

即使您?format()不给我图像大小,QImageReader是否正在读取整个文件,只有图像格式你是想找到以字节为单位的实际文件大小,还是图像的尺寸?啊,对不起,是的,这是我要找的图像的尺寸。注意了,但读取PNG头肯定是正确的,即使这意味着查找文件比读取整个文件快一点,应用解压缩/其他任何东西并转换每个像素?@paulm:是的,它会更快,因为头大小大约为8-16字节,而图像的总大小可能在几KB的范围内。但是大多数图像处理算法可能需要将完整的文件加载到内存中,以便应用任何文件管理器/算法。