iOS下载网络图片并存储到沙盒目录下

来源:互联网 发布:淘宝旺旺卖家版2017 编辑:程序博客网 时间:2024/06/07 06:06

//调用下面的方法model为一个实体类,可以传递一个网址

model.urlId为每一个网址图片的唯一标示,避免重复,如果重复会将原来图片覆盖

model.urlStr = @"http://img1.126.net/channel6/2016/022471/0805/2.jpg?dpi=6401136"

-(void)getData:(ADModel*)model{

    NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];

    DownloadImage([NSURLURLWithString:model.urlStr], ^(UIImage *image) {

        [selfsaveImage:image withFileName:model.urlIdofType:@"jpg"inDirectory:documentsDirectoryPath];

    }, ^{

        

    });

}

//获取网址并将图片转换成NSData 并且转成image通过block返回image如果失败返回错误信息

void DownloadImage ( NSURL * URL,void (^imageBlock)(UIImage * image),void (^errorBlock)(void) )

{

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0 ), ^(void)

           {

               NSData * data = [[NSDataalloc] initWithContentsOfURL:URL];

               UIImage * image = [[UIImagealloc] initWithData:data];

               dispatch_async(dispatch_get_main_queue(), ^(void){

                   if( image !=nil )

                   {

                       imageBlock( image );

                   } else {

                       errorBlock();

                   }

               });

           });

}

//将图片存储到沙盒目录下存储成jpg形式

-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {

    if ([[extensionlowercaseString] isEqualToString:@"png"]) {

        [UIImagePNGRepresentation(image)writeToFile:[directoryPathstringByAppendingPathComponent:[NSStringstringWithFormat:@"%@.%@", imageName,@"png"]] options:NSAtomicWriteerror:nil];

    } elseif ([[extensionlowercaseString] isEqualToString:@"jpg"] || [[extensionlowercaseString] isEqualToString:@"jpeg"]) {

        [UIImageJPEGRepresentation(image,1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSStringstringWithFormat:@"%@.%@", imageName,@"jpg"]] options:NSAtomicWriteerror:nil];

    } else {

        //ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);

        NSLog(@"文件后缀不认识");

    }

}

//获取图片 model1.urlId获取图片

    NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];

    NSString *filestr = [NSStringstringWithFormat:@"/%@.jpg",_model1.urlId];

    NSString*newstr = [NSStringstringWithFormat:@"%@%@",documentsDirectoryPath,filestr];

    NSData*imageData = [NSDatadataWithContentsOfFile:newstr];

    UIImage* image = [[UIImagealloc]initWithData:imageData];

    _imageview.image = image;


0 0
原创粉丝点击