Qt读取许多图像优化 - 如何只读取大小

Qt reading many images optimization - how to only read the size?

本文关键字:读取 许多 图像 优化 Qt      更新时间:2023-10-16

标题总结了这一点。如果我加载~200张不同大小的图像。如何仅加载标题,以便知道每个图像的大小?

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

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

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

显然,您似乎已经假设图像文件头(前几个字节)包含图像的大小。这并不成立(至少不是对于所有图像格式类型)。我检查了几种格式(PNG)。

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

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

Q法师好像没有办法?

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