【问题标题】:Decompress images to use on a UITableView解压缩图像以在 UITableView 上使用
【发布时间】:2013-02-11 05:08:58
【问题描述】:

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

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

  1. 创建一个 NSOperationQueue;
  2. 异步下载图片(每张图片大小为600x600px,对应@2x图片);
  3. 调整大小并创建非视网膜图像(300x300px 图像);
  4. 解压两张图片;
  5. 将所有图像存储在 NSCache 上;

在所有这些程序完成后,我在主线程上更新我的 UITableView。我正在使用 UITableViewCell 子类来绘制我需要的所有内容(如 Apple 的示例代码所示)。主要问题是我对第4步(解压缩图像),我的疑问:

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

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

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

【问题讨论】:

    标签: iphone ios uitableview image-processing compression


    【解决方案1】:
    • 您不能真正将UIImage 对象存储到磁盘,但您可以使用UIImagePNGRepresentation 将其转换为NSData
    • 使用 UIImage 会为您提供开箱即用的缓存,我敢打赌这是您可以获得的最有效的方法
    • 只是把图片放到 UIImageView 中,Apple 花了很多时间来让图片渲染速度更快。

    也就是说,您的图像并不是特别大,尤其是对于视网膜设备,我建议您查看类似 AFNetworking 的库,该库具有针对此问题的完整且经过测试的解决方案。

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

    【讨论】:

    • 好吧,我明白你的意思了,但是我已经尝试使用 UIImageView 并且事情变得更慢了。正如你所说的“Apple 花了很多时间来快速渲染图像”,是的,这是真的,但是我真的需要处理图像解压缩,因为我的上下文需要我需要在“drawrect”上绘制图像
    • 好的,然后看我链接的图片下载操作的代码,关键是一切都在后台运行,同时只用完整的UIImage更新主线程
    猜你喜欢
    • 2019-08-06
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    相关资源
    最近更新 更多