【问题标题】:UIImage from NSData in UITableView - performance issueUITableView 中来自 NSData 的 UIImage - 性能问题
【发布时间】:2013-02-28 21:19:57
【问题描述】:

我将相册中的图像作为 NSData 存储在我的应用程序文档目录中,而不是在 UITableView 中显示它们。我有性能问题。将图像保存到应用程序目录需要几秒钟的时间,而且在将它们加载到 TableView 时我遇到了同样的问题。这是我存储图像的代码:

//Convert UIImage to NSData
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

//Save image to app documents directory
NSError *error;
[imageData writeToFile:fullImagePath options:NSDataWritingAtomic error:&error];

这就是我将它们加载到 UITableView 中的方式:

NSData *imageData = [NSData dataWithContentsOfFile:path];
UIImage *myImage = [UIImage imageWithData:imageData];

cell.imageView.image = myImage;

什么可能导致这些性能问题?是否有其他方法可以从应用文档目录中存储和检索图像?

【问题讨论】:

    标签: ios objective-c xcode uiimage nsdata


    【解决方案1】:

    两种方法:

    首先,您可以考虑在保存图像之前缩小图像,或者保存一个额外的较小副本以在表格视图中显示。这取决于您需要多好的图像 - 大概是表格视图不如具有 MB 数据的全尺寸图片那么大。实际上,如果适当缩放图像,它们也会看起来更好。这本身应该可以解决延迟问题。

    其次,您可以考虑异步加载图像。维护要下载的可变图像数组。创建一个执行下载并在完成时通知表视图的单例。在通知(或委托)回调中设置cell.imageView.image

    【讨论】:

    • 谢谢,我会尝试缩放和异步加载。
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多