在 iOS 上缩小图像最节省内存的方法是什么?

2024-01-27

在后台线程中,我的应用程序需要从磁盘读取图像,将其缩小到屏幕大小(1024x768 或 2048x1536)并将其保存回磁盘。原始图像大部分来自相机胶卷,但其中一些可能具有更大的尺寸(例如 3000x3000)。

随后,在不同的线程中,这些图像经常会被缩小到 500x500 左右的不同尺寸,并再次保存到磁盘。

这让我想知道:在 iOS 中,从性能和内存角度来看,最有效的方法是什么?我使用了两种不同的 API:

  • using CGImageSource and CGImageSourceCreateThumbnailAtIndex https://stackoverflow.com/a/5860390/458193来自图像IO;
  • 绘制到CGBitmapContext https://github.com/rs/SDWebImage/blob/c609027314be09f598d2a2a75192b10f89bf1e95/SDWebImage/SDWebImageDecoder.m并将结果保存到磁盘CGImageDestination.

两者都对我有用,但我想知道它们在性能和内存使用方面是否有任何差异。当然,如果有更好的选择。


虽然我不能肯定地说它会有帮助,但我认为值得尝试将工作推到 GPU 上。您可以自己通过渲染给定大小的纹理四边形来完成此操作,或者使用GPUImage https://github.com/BradLarson/GPUImage及其调整大小功能。虽然它在旧设备上有一些纹理大小限制,但它should比基于 CPU 的解决方案具有更好的性能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 上缩小图像最节省内存的方法是什么? 的相关文章

随机推荐