保存图片到本地

描述: 拿到一个图片url链接,然后获取图片,并保存到图片。

//保存图片
            if ([action isEqualToString:@"savePicture"]) {
                
                if (url.length > 0) {                    
                    //转码 否则 带汉字不能转为data
                    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                        
                        NSData * data = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:urlString]];
                        UIImage *image = [[UIImage alloc]initWithData:data];
                        
                        NSLog(@"---%@", data);
                        NSLog(@"---%@", image);
                        
                        if (data != nil) {
                            dispatch_async(dispatch_get_main_queue(), ^{
                                //在这里做UI操作(UI操作都要放在主线程中执行)
                                [weakSelf loadImageFinished:image];
                            });  
                        }  
                    });
                }
            }
- (void)loadImageFinished:(UIImage *)image
{
    NSLog(@"------保存");
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), (__bridge void *)self);
}

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    if (!error) {
        [self showHint:@"保存成功"];
    }else {
        [self showHint:@"保存失败"];
    }
    NSLog(@"image = %@, error = %@, contextInfo = %@", image, error, contextInfo);
}

url:图片链接

PS:如果没有下面这句代码,若你需要保存的图片带有汉字,则转化不了为data,就无法保存成功图片。

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

你可能感兴趣的:(保存图片到本地)