我想问一下SDWebImageManager下载后如何获取下载的图像。我只有通过URL下载它的代码,这里是我得到的:
let manager: SDWebImageManager = SDWebImageManager.sharedManager()
manager.downloadImageWithURL(NSURL(string: feedDetails.thumbnail), options: [],
progress: {(receivedSize: Int, expectedSize: Int) -> Void in
print(receivedSize)
},
completed: {(image, error, cached, finished, url) -> Void in
self.feedImage.image = image
}
)
答案 0 :(得分:5)
据我所知(我只是查阅了作者的Git页面),有以下方法直接访问存储在缓存中的图像 -
您可以使用 SDImageCache 使用以下代码将图像显式存储到缓存中:
[[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey];
myImage 是您要存储的图像, myCacheKey 是图像的唯一标识符。
将图像存储到缓存并想要使用该图像后,只需执行以下操作:
[[SDImageCache sharedImageCache] queryDiskCacheForKey:myCacheKey done:^(UIImage *image) {
// image is not nil if image was found
}];
这段代码是Objective-C代码,你必须自己“转换”它。
我希望我能帮到你!
答案 1 :(得分:3)
从SDWebImageManager
类downloadImageWithURL:
方法
如果缓存中没有或返回,则下载给定URL的图像 否则是缓存版本。
因此,如果图像存在于缓存中,则表示您已使用代码检索图像,而不是从网上下载。
答案 2 :(得分:0)
感谢答案@beeef,但SDWebImage已更新部分代码: 保存图像:
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:string] options:SDWebImageDownloaderUseNSURLCache progress:nil completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
if (image && finished) {
// Cache image to disk or memory
[[SDImageCache sharedImageCache] storeImage:image forKey:@"img_key" toDisk:YES completion:^{
//save
}];
}
}];
从磁盘缓存中获取图像:
[[SDImageCache sharedImageCache] queryCacheOperationForKey:@"img_key" done:^(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType) {
[self.imageV setImage: image];
}];