图像异步加载
使用网络图片,特别是像淘宝、微淘这种需要大量展示图片的app,如果使用同步图片加载,那么整个应用都会被图片加载的过程给拖慢,因此也一般会使用异步图片加载,除了使用异步图片加载,为了节省网络流量和加快图片加载速度,需要另外进行图片缓存。
异步加载图片
异步加载图片很简单,利用GDC开一个异步线程下载图片就好了,直接上代码:
dispatch_queue_t downloadQueue = dispatch_queue_create("com.abc.processsmagequeue", NULL);
dispatch_async(downloadQueue, ^{
NSData * imageData = [NSData dataWithContentsOfURL:url];
});
缓存图片
缓存图片可以使用 SDWebImage,这个lib相当方便,我使用的是 SDImageCache 这个类来缓存图片。作为存储图片的 key,可以直接使用图片的url作为key,然而图片url作为key会过长,因此可以使用url的md5作为图片的key,上代码:
md5:
NSString* urlMD5 = [url.absoluteString MD5Hash];
取:
UIImage *image = [[SDImageCache sharedImageCache] imageFromKey:urlMD5];
存:
[[SDImageCache sharedImageCache] storeImage:tmpImage forKey:urlMD5 toDisk:YES];
webp的使用
webp是google发表的一种图片格式,这种图片压缩率会比jpeg、png更高,因此下载图片会更省流量(这种图片在chrome是可以直接解析的)。这iOS解析时,可以直接使用 WebPImage。
NSData *imageData = [NSData dataWithContentsOfURL:url]; UIImage *tmpImage = [[WebPImage alloc] loadWebPFromData:imageData];
评论
发表评论