获取SDWebImage缓存图像

时间:2016-05-03 14:56:10

标签: ios swift sdwebimage

我想问一下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
                            }
                        )

3 个答案:

答案 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)

SDWebImageManagerdownloadImageWithURL:方法

  

如果缓存中没有或返回,则下载给定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];
    }];