利用SDWebImage下载图片

利用SDWebImage下载图片的原因

近期项目中有一个关于开屏广告加的需求变更。需要客户端将一段时间内的开屏广告图都预先下载到本地,确保用户在网络不佳甚至断网的情况下都能看到我们的开屏广告。一般情况下我们都是通过SDWebImage来动态的加载网络图片,能不能通过SDWebImage来帮我们预先下载好图片呢?下面就来分享一下我是怎么通过SDWebImage预加载图片的 :)

封装好的下载类

为了能方便的实现图片的下载,使用,移除等功能的调用,我封装了一个类ZYImageDownloader,并且已经在github上开源,有兴趣的伙伴可以直接前往下载

原理分析

其实SDWebImage内部已经帮我们实现了图片下载的类,SDWebImageDownloader一个专门用来下载图片的类,SDWebImagePrefetcher一个专门用来批量下载图片的类

这里我们主要就是使用了SDWebImagePrefetcher来下载图片,我们只需要将要下载的图片地址传入,SDWebImagePrefetcher就会帮我们将图片逐个下载下来,并且缓存在本地,缓存的方式和我们通常使用的动态加载图片一样以url为key存储

[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:prefetchURLs progress:^(NSUInteger noOfFinishedUrls, NSUInteger noOfTotalUrls) {
        
} completed:^(NSUInteger noOfFinishedUrls, NSUInteger noOfSkippedUrls) {
        
}];

当我们需要使用对应地址的图片时,我们只需要以url为key来获取图片即可

NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:[NSURL URLWithString:imageURL]];
    UIImage *image = [[SDImageCache sharedImageCache] imageFromCacheForKey:key];
    return image;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,804评论 25 709
  • 前不久做了一个生成快照的需求,其中用到 SDWebImage 来下载图片,在使用该框架的过程中也遇到了一些问题,索...
    ShannonChenCHN阅读 14,152评论 12 241
  • SDWebImage库的作用:提供一个UIImageView分类以支持加载来自网络图片。具有异步下载、缓存管理、同...
    逍遥晨旭阅读 21,038评论 5 30
  • 下载 下载管理器 SDWebImageDownLoader作为一个单例来管理图片的下载操作。图片的下载是放在一个N...
    wind_dy阅读 1,554评论 0 1
  • 今天是休息日,你会选择去外面看看世界,还是呆在家里追追剧,还是看一会书,听一会电台?好像不管多忙,多累,双休日...
    菩树阅读 181评论 0 0