美文网首页
iOS添加图片到相册

iOS添加图片到相册

作者: 令狐冲_ | 来源:发表于2018-02-12 15:41 被阅读0次

添加资源到相册中是比较常见的需求,这份代码是给一些有这方面需求,但是又比较懒,不想看Photos框架的同学们准备的.

注:以下代码均未封装,可以直接copy使用.
  • 需求一:直接添加图片到相机胶卷
// 写入图片到相机胶卷
- (void)writeImageToAssetsLibrary:(UIImage *)image {
    [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        PHAssetChangeRequest *creationRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
        PHFetchResult *fetchreult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
        PHAssetCollection *assetCollection = fetchreult.firstObject;
        PHAssetCollectionChangeRequest *addAssetRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];
        PHObjectPlaceholder * assetPlaceholder = creationRequest.placeholderForCreatedAsset;
        [addAssetRequest addAssets:@[assetPlaceholder]];
    } completionHandler:^(BOOL success, NSError * _Nullable error) {

    }];
}
  • 需求二:写入图片到指定相册,如果没有,则创建一个
- (void)writeImageWithoutWatermark:(UIImage *)image albumTitle:(NSString *)albumTitle completion:(FCHPhotoSaveCompletion)completion {

    if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {
        __block PHAssetCollection *assetAlbum = nil;
        
        if (albumTitle.length == 0 && !albumTitle) {
            // 相册名为空或者长度错误直接保存系统相册
            PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];
            
            assetAlbum = [result firstObject];
        }
        else {
            PHFetchResult<PHAssetCollection *> *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:nil];
            [result enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                // 相册是否存在
                if ([albumTitle isEqualToString:obj.localizedTitle]) {
                    assetAlbum = obj;
                    
                    *stop = YES;
                }
            }];
            
            if (!assetAlbum) {
                // 不存在创建相册
                [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
                    [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:albumTitle];
                } completionHandler:^(BOOL success, NSError * _Nullable error) {
                    // 相册创建成功保存图片
                   [self writeImageWithoutWatermark:image albumTitle:albumTitle completion:completion];
                }];
            }
        }
        
        // 保存逻辑
        [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
            PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
            PHObjectPlaceholder *assetPlaceholder = changeRequest.placeholderForCreatedAsset;
            PHAssetCollectionChangeRequest *albumChangeRequset = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetAlbum];
            [albumChangeRequset addAssets:@[assetPlaceholder]];
        } completionHandler:completion];
    }
    else {
        completion(NO, [NSError errorWithDomain:@"Write Album Error" code:0 userInfo:@{NSLocalizedFailureReasonErrorKey: @"Authorization Failure"}]);
    }
}

如果对Photos感兴趣,请进一步阅读:

相关文章

  • iOS添加图片到相册

    添加资源到相册中是比较常见的需求,这份代码是给一些有这方面需求,但是又比较懒,不想看Photos框架的同学们准备的...

  • iOS 11 NSPhotoLibraryAddUsageDes

    对于iOS 11,app访问默认可以读取相册,如需保存图片到相册,要在info.plist中添加Privacy -...

  • iOS11 NSPhotoLibraryAddUsageDesc

    在iOS11中,app保存图片到用户相册时必须添加权限使用描述即NSPhotoLibraryAddUsageDes...

  • iOS保存(获取)图片到相册

    iOS保存图片到相册 二 : 获取系统的相册图片(一张或者多张) 1.获取一张相册里的图片(图片 == 1) 获取...

  • 图片多选的实现

    图片多选的实现 分为两部分1 调用相机拍照添加图片2 打开相册添加图片 1 使用相机添加图片 打开相册添加图片使用...

  • swift中存入相册和从相册中取照片

    swift中添加图片到相册中 实例代码 1.拿到照片后,写入系统的相册. UIImageWriteToSavedP...

  • IOS相册权限

    iOS11之前:访问相册和存储照片到相册(读写权限),需要用户授权,需要添加NSPhotoLibraryUsage...

  • iOS保存图片到相册

    在APP中点击照片,都会显示出大图,然后在大图的上面会有个保存照片的按钮,照片直接保存到了系统的【相机胶卷】相册中...

  • iOS保存图片到相册

    保存图片到相册就我所知的三种:UIImageWriteToSavedPhotosAlbum方法、ALAssetsL...

  • IOS保存图片到相册

    这篇文章主要是介绍在IOS8之后官方给出的系统框架Photos。首先先看一看这个框架的分类: PHAsset: 代...

网友评论

      本文标题:iOS添加图片到相册

      本文链接:https://www.haomeiwen.com/subject/qlortftx.html