解压缩要在UITableView上使用的图像

时间:2013-02-11 05:08:59

标签: iphone ios uitableview image-processing compression

我目前正在开发一个项目,我需要在UITableView上显示大图像,对于很多开发人员而言这是非常常见的问题,并且我们通过以下过程学习了线程:

注意:我推荐的大图像,它们都有300x300px(600x600px,视网膜)和大约200kb,JPEG

  1. 创建NSOperationQueue;
  2. 异步下载图像(每张图像有600x600像素,对应于@ 2x图像);
  3. 调整大小并创建非视网膜图像(300x300px图像);
  4. 解压缩两张图片;
  5. 将所有图像存储在NSCache上;
  6. 完成所有程序后,我在主线程上更新我的UITableView。我使用UITableViewCell子类绘制我所需的所有内容(如Apple的示例代码所示)。主要问题是我很困惑第4步(解压缩图片),我的疑惑:

    注意:我目前正在将解压缩的图像存储在NSCache上。

    • 我应该解压缩图像并存储为UIImage或NSData吗?
    • 如何存储解压缩的图像?(NSCache,NSMutableArray ...)
    • 将解压缩的图像传递给UITableViewCell子类的最佳方法是什么?

    注意:我正在使用此处提供的解压缩代码:link

1 个答案:

答案 0 :(得分:2)

  • 您无法真正将UIImage对象存储到磁盘,但可以使用NSData
  • 将其转换为UIImagePNGRepresentation
  • 使用UIImage将为您提供开箱即用的缓存,我敢打赌它是您获得的最有效率
  • 只需将图像放入UIImageView,Apple就会花费大量时间快速进行图像渲染。

也就是说,你的图像并不是特别大,特别是对于视网膜设备,我会建议查看像AFNetworking这样的库,这个库有一个完整且经过测试的解决方案。

另外,您可以查找AFImageRequestOperation的代码,它完全符合您的需求:下载,存储,缓存,重用。