当在一个页面加载多张图片时,加载速度上要求顺畅,则需要用到缓存机制,SDWebImage可以解决之。下面方法1 没有用到缓存机制,加载图片较慢,方法2 用到缓存,加载速度快。
- 方法1
NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://video-zfish.oss-cn-shenzhen.aliyuncs.com/camera/pictures/201702/18140700_1.jpeg”]];
UIImage *img1 = [UIImage imageWithData:data1];
NSLog(@"img1 像素 w:%f, h:%f", img1.size.width, img1.size.height);
- 方法2
// 优化 计算网络图片的大小Size
// 1. 先查看SDWebImage有没有缓存这张图片,如果有则不用下载网络图片,直接获取到图片的大小
// 2. 如果没有则会下载完整的图片NSData来计算大小
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImage *img;
if ([manager diskImageExistsForURL:[NSURL URLWithString:imgURL]]) {
img = [[manager imageCache] imageFromDiskCacheForKey: [NSURL URLWithString:imgURL].absoluteString];
ZFLOG(@"SD--获取网络图片的大小--Size : %@", NSStringFromCGSize(img.size));
} else {
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgURL]];
img = [UIImage imageWithData:data];
ZFLog(@"NSData--获取网络图片的大小--Size : %@", NSStringFromCGSize(img.size));