我目前正在开发一款处理多张图片的应用。我接收图像作为 UIImage
并将它们保存到手机上的临时文件夹中。之后,我创建了一个对象,该对象具有 UIImage
和一些元数据作为其属性。加载所有图像后,它们会通过 OpenCV 进行处理。我想知道如果我只保存文件路径而不是在整个过程中保留对实际 UIImage
的引用然后根据请求加载 UIImage 是否会优化整体性能。
如果有人可以描述此场景的最佳实践,那将非常有帮助。
最佳答案
在内存中保存一堆图像会占用内存。您有内存不足和崩溃的风险。
将它们保存到临时文件,构建路径数组,然后一次加载和处理一个图像将减少内存占用。
如果图像很小而且数量不多,那么当您第一次收到它们时在内存中简单地处理它们可能比将它们保存到磁盘然后重新加载它们更快。
您必须对图像的总数/大小进行一些分析,并确定最佳权衡所在。 (请记住,图像占用的内存通常比其文件大小所建议的多得多。)当您将 UIImage 加载到内存中时,每个像素需要 3 或 4 个字节(如果它们是 alpha channel ,则为 4 个字节)。
关于ios - 存储 UIImage 的文件名或对象以在 Obj-C 中进行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36670958/