如何将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可能更好。

你想访问一个在线图片:

  1. 首先,您尝试在内存caching中打开图像(带有关键字,也许是url),但错过了。
  2. 其次,你试图find磁盘中的图像,再次错过。
  3. 然后,您应该使用GCD或其他方法asynchronous下载在线图像。
  4. 当图像下载成功后,将其显示在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。