【发布时间】:2023-03-09 12:35:02
【问题描述】:
我目前有一个应用程序,我可以在其中进行大量图像处理。我基本上拍摄 320x320( 或 Retina 上 640x640)的图像,然后将其缩小到 128x128( 或 Retina 上 256x256),然后将其四角修圆并应用光泽高光.一切都是使用 Core Graphics 绘图完成的。
在任何时候都可能有大约 600 个图像需要此处理,因此我在应用程序启动时使用后台线程执行大约 40 个并将它们缓存到 FIFO 队列中。当不在缓存中的图像需要处理时,我会这样做并将其添加到缓存的末尾,丢弃第一个缓存的图像。如果再次需要第一个图像,它会经历相同的过程。
我想知道的是,将丢弃的图像保存到磁盘而不是在下次需要它们时从头开始重新创建它们是否更有意义并且最终更有效,因为我可以改为读取它们从磁盘。
这些图像也使用CALayer 显示,因此在设置图层内容时可能会因为从UIImage 转换为CGImage 而产生开销。如果我将它们存储在磁盘上,我相信它们可以直接作为CGImage 读取?
我们真诚欢迎任何有关提高此流程效率的想法和意见。
【问题讨论】:
-
请注意,解压缩图像需要的时间比从磁盘读取图像要长cocoanetics.com/2011/10/avoiding-image-decompression-sickness 我猜你必须对每个部分进行计时(读取、解压缩、缩放+舍入+光泽),看看会发生什么。
-
我会在保存之前缩放+圆形+光泽,所以我唯一需要了解的是解压缩成本。图像不能未压缩存储吗?比如仅仅存储他们的数据?
标签: iphone objective-c ios caching core-graphics