Qt读取许多图像优化 - 如何只读取大小
Qt reading many images optimization - how to only read the size?
标题总结了这一点。如果我加载~200张不同大小的图像。如何仅加载标题,以便知道每个图像的大小?
目前,我发现需要大量的 cpu/内存和 IO 才能将它们全部加载到内存中(我正在尝试从它们生成一个图集)。
QImage
似乎没有办法做到这一点。 QImageReader
听起来像是我想要的,但这似乎仍然只是继续阅读整个图像,所以不确定它的目的是什么。有没有另一个类或某种方法可以使用我提到的任何一个类来仅从标头中获取图像大小?
如何仅加载标题,以便知道每个图像的大小?
显然,您似乎已经假设图像文件头(前几个字节)包含图像的大小。这并不成立(至少不是对于所有图像格式类型)。我检查了几种格式(PNG)。
目前我发现加载它们需要大量的 cpu/内存和 IO 在内存中只是为了大小
正如您提到的,您正在尝试一次加载大约 ~200 张图像只是为了找到大小。这种设计看起来不太好,我们应该尝试将我们的问题分解为较小的问题。因此,这里有效的方法可能是打开一个文件并将大小存储找到到某个数据结构中并关闭该文件。如果您的程序的其他部分需要将~200图像加载到内存中,那么我们应该尝试考虑如何避免它。
Q法师好像没有办法?
它没有,因为似乎没有可移植/一致的方式来为所有类型的图像格式执行此操作。但是,如果您知道包含标头的任何文件格式,则可以编写小的辅助函数,该函数可以打开文件并读取标头并查找大小。但是这个辅助函数将非常特定于特定类型的图像格式,我们可能需要编写不同的逻辑来读取标头(所有图像格式都有不同的标头大小和信息)。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- C :如何从格式的文本文件中读取许多数据到程序中
- 许多读取/一条在原子变量中写入
- OpenGL:从许多帧缓冲纹理中读取空间像素数据的有效方法
- 如何读取和写入许多对象(或任何数据)到缓冲区
- 从一个目录中读取许多小文件是多么有问题
- 读取和写入许多文本文件
- 读取子文件夹中的许多文件时出错
- Qt读取许多图像优化 - 如何只读取大小