zoukankan      html  css  js  c++  java
  • 关于ios的同步异步加载图片

     1 void UIImageFromURL( NSURL * URL, void (^imageBlock)(UIImage * image), void (^errorBlock)(void) )
     2 {
     3     dispatch_async( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void)
     4                    {
     5                        NSData * data = [[[NSData alloc] initWithContentsOfURL:URL] autorelease];
     6                        UIImage * image = [[[UIImage alloc] initWithData:data] autorelease];
     7                        dispatch_async( dispatch_get_main_queue(), ^(void){
     8                            if( image != nil )
     9                            {
    10                                imageBlock( image );
    11                            } else {
    12                                errorBlock();
    13                            }
    14                        });
    15                    });
    16 }

    上面是块语法加载图片的方法,同步加载与异步加载的方法是:

     1     ////////下载图片////////
     2     //方法一(暴力而有效,必须下载完才进入页面)
     3     NSURL *url = [NSURL URLWithString:@"http://cc.cocimg.com/bbs/attachment/upload/07/128707.png"];
     4     UIImage *imga = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:url]];
     5     img1.image=imga;
     6     
     7     
     8     //方法二 (需要等下载完才显示,但照样可以进入页面)
     9     NSString *url2=@"http://tp1.sinaimg.cn/2122519000/50/5620445947/1";
    10     UIImageFromURL( [NSURL URLWithString:url2], ^( UIImage * image )
    11                    {
    12                        img2.image=image;
    13                        NSLog(@"%@",image);
    14                    }, ^(void){
    15                        NSLog(@"error!");
    16                    });

    读取与存储图片

     1     UIImage *bear=[UIImage imageNamed:@"小破熊.png"];
     2     
     3     //Document
     4     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
     5     
     6     
     7     /*写入图片*/
     8     //帮文件起个名
     9     NSString *uniquePath=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"image.png"];
    10     //将图片写到Documents文件中
    11     [UIImagePNGRepresentation(bear)writeToFile: uniquePath    atomically:YES];
    12 
    13     /*读取入图片*/
    14     //因为拿到的是个路径,所以把它加载成一个data对象
    15     NSData *data=[NSData dataWithContentsOfFile:uniquePath];
    16     //直接把该图片读出来
    17     img3.image=[UIImage imageWithData:data];
  • 相关阅读:
    layer满屏/禁止最大化最小化 可以做选择框使用
    layer关闭弹窗
    导出excel
    linux中安装软件的集中方法
    nginx负载均衡
    zookeeper部署搭建
    git 分支合并处理
    前端框架
    云计算基本概念
    Android 单元测试四大组件Activity,Service,Content Provider , Broadcast Receiver
  • 原文地址:https://www.cnblogs.com/LoveJiaQi/p/2864231.html
Copyright © 2011-2022 走看看