从网络下载图片,并存入本地缓存

转载 2015年07月07日 18:40:15

图片地址,在百度中任意找一个图片的URL

1.图片异步加载,不阻塞主线程

2.将图片存入缓存,不重复加载

3.网络请求异常而加载失败后,恢复可重新加载


#import "ViewController.h"


@interface ViewController ()

@property (weaknonatomicIBOutlet UIImageView *imageView;


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

    

    [self downLoadImage];

}


 - (void)downLoadImage

{

    NSString *urlStr =@"http://c.hiphotos.baidu.com/image/w%3D230/sign=5cb0e1995043fbf2c52ca120807fca1e/77c6a7efce1b9d1667165ef0f0deb48f8d54644a.jpg";

    

    //拿到缓存的目录和文件名

    NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectoryNSUserDomainMaskYESlastObject];

    NSString *cachePath = [cacheDir stringByAppendingPathComponent:@"77c6a7efce1b9d1667165ef0f0deb48f8d54644a.jpg"];

    

    //判断文件是否存在

    if ([[NSFileManager defaultManagerfileExistsAtPath:cachePath])

    {

        //文件已经存在,从本地加载

        UIImage *image = [UIImage imageWithContentsOfFile:cachePath];

        self.imageView.image = image;

        return;

    }

    

    NSURL *url = [NSURL URLWithString:urlStr];


    dispatch_async(dispatch_get_global_queue(00), ^{

        //将图像保存到缓存目录中,下次启动时,检查缓存目录中是否有图像文件,如果有,

        //就不去网络上加载

        NSData *data = [NSData dataWithContentsOfURL:url];

        

        //将文件保存到缓存目录

        // 将二进制数据写到缓存目录

        [data writeToFile:cachePath atomically:YES];

        

        UIImage *image = [UIImage imageWithData:data];

        dispatch_async(dispatch_get_main_queue(), ^{

            

            self.imageView.image = image;

        });

    });

}


@end

相关文章推荐

iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析

iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析

网络图片下载与缓存

网络请求 主线程阻塞 UI停止刷新,应用无法响应用户操作 耗时操作不应该在主线程进行 ANR application not responding 应用无响应异常 主线程阻塞时间过长,就会抛...

通过缓存来实现网络图片的下载,通过RecyclerView和ViewPaper来展示出来

这几天实现了一个网络下载图片的功能,并且在ViewPaper和RecyclerView中展示出来。展示出来的功能在我之前写过的一篇文章中。 android 使用RecyclerView实现首项左右...

Android-我自己的网络图片下载缓存类

缓存核心还是使用LruCache类(android.util.LruCache),

安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(二)

本帖原创,转发请标记出处。实在是本人一些肤浅的经验之谈,大神可绕行。另外如有不足之处或者可以优化的地方 欢迎指出,万分感谢。只为相互学习和进步。如果能对您有所帮助或者启发,便是我最开心的事。 ...

安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(一)

本帖原创,转发请标记出处。实在是本人一些肤浅的经验之谈,大神可绕行。另外如有不足之处或者可以优化的地方 欢迎指出,万分感谢。只为相互学习和进步。如果能对您有所帮助或者启发,便是我最开心的事。 ...

Android-网络图片下载工具类-三级缓存

Android-网络图片下载工具类-三级缓存

android下载网络图片并缓存

324234

android下载网络图片并缓存

异步下载网络图片,并提供是否缓存至内存或外部文件的功能 异步加载类AsyncImageLoader     public void downloadImage(final String url, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)