【发布时间】:2012-10-26 10:04:04
【问题描述】:
在后台线程中,我的应用程序需要从磁盘读取图像,将它们缩小到屏幕大小(1024x768 或 2048x1536)并将它们保存回磁盘。原始图像大部分来自相机胶卷,但其中一些可能具有更大的尺寸(例如 3000x3000)。
稍后,在不同的线程中,这些图像会经常缩小到 500x500 左右的不同尺寸并再次保存到磁盘。
这让我想知道:在 iOS 中,性能和内存方面最有效的方法是什么?我使用了两种不同的 API:
- 使用 ImageIO 中的
CGImageSourceandCGImageSourceCreateThumbnailAtIndex; -
drawing to
CGBitmapContext并使用CGImageDestination将结果保存到磁盘。
两者都对我有用,但我想知道它们在性能和内存使用方面是否有任何差异。当然,如果有更好的选择。
【问题讨论】:
-
我已经按照this question 中的描述以“老式方式”完成了它——通过一点点玩弄。那里的技术可能用于在“块”中进行缩放,以避免过度使用内存,但这需要一点工作。 (不过,并不是那么神秘。)
-
您在 Instruments 中查看过这两种方法的结果吗?
-
@foggzilla:不,我还没有时间。我开始了赏金,希望有人能做这项研究。
标签: ios memory-management core-graphics javax.imageio cgimage