如何将url图像存储在caching中然后在iphone中的imageview中显示
我直接在Imageview中打开URL图像,但我想将图像存储在caching中以供将来参考…帮我解决我的问题..
提前致谢
您可以使用使用图像caching的SDWebImage …
该库为UIImageVIew
提供了一个类别,支持来自Web的远程图像。
它提供:
一个UIImageView
类别添加Web图像和cachingpipe理到Cocoa Touch框架
asynchronous图片下载器
具有自动caching到期处理的asynchronous内存+磁盘映像caching
背景图像解压缩
保证相同的URL不会被多次下载
保证伪造的URL不会一次又一次地重试
保证主线程不会被阻塞
表演! 使用GCD和ARC
这是iOS开发中的一个经典问题,我之前编写了一个类OnlineImageView ,它使用NSOperationQueue – 现在GCD可能更好。
你想访问一个在线图片:
- 首先,您尝试在内存caching中打开图像(带有关键字,也许是url),但错过了。
- 其次,你试图find磁盘中的图像,再次错过。
- 然后,您应该使用GCD或其他方法asynchronous下载在线图像。
- 当图像下载成功后,将其显示在UIImageView中,并将其caching在内存中,并将其写入磁盘供将来使用。
一些示例代码:
- (void)downloadImage:(NSDictionary *)info { /* HOWTO: Prevent Downloading the same url many times */ /* Keep the download task one by one ? */ NSString *url = [info objectForKey:@"url"]; NSURL *imageUrl = [NSURL URLWithString:url]; UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:imageUrl]]; if (image) { id theDelegate = [info objectForKey:@"delegate"]; if ([theDelegate respondsToSelector:@selector(imageDownloader:didFinishWithImage:)]) { [theDelegate imageDownloader:self didFinishWithImage:image]; } [cacheQueue cacheImage:image withKey:url]; } else { #ifdef DEBUG NSLog(@"Failed to download : %@\n", url); #endif } }
使用SDWebImage 。 其最好的和容易的图像数据caching。