缓存图像以供离线使用 SDWebImage
Posted
技术标签:
【中文标题】缓存图像以供离线使用 SDWebImage【英文标题】:Cache image for use offline SDWebImage 【发布时间】:2016-10-14 09:26:26 【问题描述】:我正在使用 SDWebImage 从不同的 URL 下载图像,现在我想知道是否可以下载这些图像并将它们存储在某个位置,以便当我离线并启动我的应用程序时我仍然可以看到它们?
我注意到 Instagram 使用了类似的东西,一旦你下载了图像,你可以关闭应用程序离线,然后重新打开应用程序,你仍然可以看到图像。
我认为 SDWebImage 可以做到这一点,但不确定,如果不可能,请纠正我。
非常感谢任何可以提供帮助的人!
【问题讨论】:
是的,这可以通过 SDWebImage 实现。 @Rahul 感谢您的确认,您知道我在哪里可以找到一些教程或解释它的地方吗? 【参考方案1】:我假设您要存档的是那种提要,在您的应用被终止/重新启动并且您没有互联网连接(就像 Instagram 一样)后,您会在其中显示 4-5 张图片。
对您来说,一种可能性是,当您有互联网连接时,按照您习惯的方式下载图像,并将 4-5 个图像作为 NSData 存储到您的核心数据中。
然后您可以将这些图像用作占位符,并且在用户没有连接时您将拥有“内容”。
这是将图像转换为 NSData 并返回的代码:
let dataFromImage = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
这里是how to store images into core data.的完美教程
然后,您可以使用核心数据中的图像填充 tableView(例如),以防reachability == false
。
【讨论】:
【参考方案2】:导入 UIImageView+WebCache.h
标头,并在视图控制器中调用 setImageWithURL:placeholderImage: 方法。 SDWebImage lib 将为您处理,从异步下载到缓存管理。
【讨论】:
我已经有了,我想要的是能够在没有互联网的情况下访问我的应用程序,并查看我上次打开应用程序时下载的图像以访问互联网SDWebImageManager
根据图片的url字符串自动缓存图片。【参考方案3】:
您可以使用SDWebImage
将图像存储在应用目录中,而不是手动存储。使用SDImageCache
会更简单。 diskImageExistsWithKey
通过回调确定您的图像是否存在于位置(在目录中或应用程序的临时文件夹中)。你只需检查一下! ...
[[SDImageCache sharedImageCache] diskImageExistsWithKey:localImagePath completion:^(BOOL isInCache)
if ( isInCache )
image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]; // it returns a simple UIImage
[yourImageView setImage:[[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]]; // or set image in your UIImageView
else
[yourImageView sd_setImageWithURL:[NSURL URLWithString:downloadPath] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL)
if (image)
[[SDImageCache sharedImageCache] storeImage:image forKey:localPath toDisk:YES completion:^ // This block will help you to store image from server to local directiry
NSLog(@"Downloaded");
];
];
] ;
【讨论】:
以上是关于缓存图像以供离线使用 SDWebImage的主要内容,如果未能解决你的问题,请参考以下文章