IOS笔记之-保存图片

第一部分:保存到系统相册

IOS保存图片功能只有一句话:UIImageWriteToSavedPhotosAlbum([erweima image], nil, nil,nil);

一般来说这就够了,但有的时候需要根据保存反馈来进行下一步操作,可以加如下方法:

/**

 *  save image to photo album completion method

 *

 *  @param image              saved image

 *  @param error                saved error, if is not null that means save success

 *  @param contextInfo      I don't kown?

 */

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {    

    if (error != NULL){

        //失败

    }

    else{

        //成功

    }

}

调用的时候这样写:UIImageWriteToSavedPhotosAlbum([erweima image], self, @selector(image:didFinishSavingWithError:contextInfo:),nil);

我也是刚查的,参考博文:http://blog.cnrainbird.com/index.php/2012/07/11/uiimagewritetosavedphotosalbum_pan_duan_shi_fou_bao_cun_cheng_gong/

第二部分:创建自定义相册,并保存图片,代码为主,可直接赋值,但是有个bug,暂时没找到怎么处理,如果有会的大神请指教一下

/**

 *  创建自定义相册

    Bug:详情见此方法中 TODO

 */

-(void)createAFonderInAlbum {

    

    ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];

    NSMutableArray *groups=[[NSMutableArray alloc]init];

    ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop)

    {

        if (group)

        {

            [groups addObject:group];

        }

        else

        {

            BOOL haveHDRGroup = NO;

            for (ALAssetsGroup *gp in groups)

            {

                NSString *name =[gp valueForProperty:ALAssetsGroupPropertyName];

                if ([name isEqualToString:@"你的相册名"])

                {

                    haveHDRGroup = YES;

                }

            }

            if (!haveHDRGroup)

            {

                //do add a group named "XXXX"

                [assetsLibrary addAssetsGroupAlbumWithName:@"你的相册名"

                                               resultBlock:^(ALAssetsGroup *group)

                 {

                     if (group == nil) {//TODO Bug,第一次创建OK,当我在相册里删除刚创建的自定义相册后,再次创建,此时 group == nil

                         

                         return ;

                     }

                     

                     [groups addObject:group];

                 }

                                              failureBlock:nil];

                haveHDRGroup = YES;

            }

        }

    };

    //创建相簿

    [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:listGroupBlock failureBlock:nil];

    

    //保存图片到刚创建的相册中

    [self saveToAlbumWithMetadata:nil imageData:UIImagePNGRepresentation([erweima image]) customAlbumName:@"你的相册名" completionBlock:^{

        //成功

    } failureBlock:^(NSError *error) {

        //失败

    }];

 

}

/**

 *  save image to custom album

 *

 *  @param metadata        I have not use it,just nil

 *  @param imageData       image png data to save

 *  @param customAlbumName custom album name

 *  @param completionBlock finish block,success

 *  @param failureBlock    finish block,fail

 */

- (void)saveToAlbumWithMetadata:(NSDictionary *)metadata

                      imageData:(NSData *)imageData

                customAlbumName:(NSString *)customAlbumName

                completionBlock:(void (^)(void))completionBlock

                   failureBlock:(void (^)(NSError *error))failureBlock

{

    

    ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];

    __weak ALAssetsLibrary *weakSelf = assetsLibrary;

    void (^AddAsset)(ALAssetsLibrary *, NSURL *) = ^(ALAssetsLibrary *assetsLibrary, NSURL *assetURL) {

        [assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset) {

            [assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {

                

                if ([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:customAlbumName]) {

                    [group addAsset:asset];

                    if (completionBlock) {

                        completionBlock();

                    }

                }

            } failureBlock:^(NSError *error) {

                if (failureBlock) {

                    failureBlock(error);

                }

            }];

        } failureBlock:^(NSError *error) {

            if (failureBlock) {

                failureBlock(error);

            }

        }];

    };

    [assetsLibrary writeImageDataToSavedPhotosAlbum:imageData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {

        if (customAlbumName) {

            [assetsLibrary addAssetsGroupAlbumWithName:customAlbumName resultBlock:^(ALAssetsGroup *group) {

                if (group) {

                    [weakSelf assetForURL:assetURL resultBlock:^(ALAsset *asset) {

                        [group addAsset:asset];

                        if (completionBlock) {

                            completionBlock();

                        }

                    } failureBlock:^(NSError *error) {

                        if (failureBlock) {

                            failureBlock(error);

                        }

                    }];

                } else {

                    AddAsset(weakSelf, assetURL);

                }

            } failureBlock:^(NSError *error) {

                AddAsset(weakSelf, assetURL);

            }];

        } else {

            if (completionBlock) {

                completionBlock();

            }

        }

    }];

}

参考链接:http://www.jianshu.com/p/e6b5d55fd6ec

转载于:https://my.oschina.net/wolfcub1110/blog/687769

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值