zoukankan      html  css  js  c++  java
  • iOS中怎么存储照片到自定义相册

    在市场上主流App中,大多数App都具有存储图片到自己App的相册中.苹果提供的方法只能存储图片到系统相册,下面讲一下怎么实现:

    实现思路:

       1.对系统相册进行操作的前提必须导入#import <Photos/Photos.h>

         2.在用户点击保存之后,首先判断用户是否允许App访问相册.若不是不可以,提醒用户需要打开权限.

         3.进入用户相册之后,首先判断有没有改App储存图片的相册,有的话直接把图片存储进去,没有的话创建一个新的相册.

         4.在图片存储到相册的时候用到占位图片.

    具体实现:

        // 1.获取用户授权状态,状态有四种

        // 1) PHAuthorizationStatusNotDetermined  不确定

        // 2)  PHAuthorizationStatusRestricted, 家长控制,拒绝

        // 3)  PHAuthorizationStatusDenied, 拒绝

        // 4) PHAuthorizationStatusAuthorized 授权

        PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];

     // 2.判断用户的授权状态

        if (status == PHAuthorizationStatusNotDetermined) {

                // 如果状态是不确定的话,block中的内容会等到授权完成再调用

            [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

                // 授权完成就会调用

                if (status == PHAuthorizationStatusAuthorized) {

          //调用存储图片的方法

                    [self savePhoto];

                }

            }];

            //如果允许访问

        } else if (status == PHAuthorizationStatusAuthorized) {

       //调用存储图片的方法

            [self savePhoto];

            //如果权限是拒绝

        } else {

            // 使用第三方框架,弹出一个页面提示用户去打开授权

           // [SVProgressHUD showInfoWithStatus:@"进入设置界面->找到当前应用->打开允许访问相册开关"];

        }

        #pragma mark - 该方法获取在图库中是否已经创建该App的相册

      //该方法的作用,获取系统中所有的相册,进行遍历,若是已有相册,返回该相册,若是没有返回nil,参数为需要创建  的相册名称

         - (PHAssetCollection *)fetchAssetColletion:(NSString *)albumTitle

        {

                 // 获取所有的相册

                 PHFetchResult *result = [PHAssetCollection           fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];

        //遍历相册数组,是否已创建该相册

        for (PHAssetCollection *assetCollection in result) {

            if ([assetCollection.localizedTitle isEqualToString:albumTitle]) {

                return assetCollection;

            }

        }

        return nil;

     }

       #pragma mark - 保存图片的方法

       - (void)savePhoto

      {

      //修改系统相册用PHPhotoLibrary单粒,调用performChanges,否则苹果会报错,并提醒你使用

        [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{

            

            // 调用判断是否已有该名称相册

           PHAssetCollection *assetCollection = [self fetchAssetColletion:

    @"百思"];

            //创建一个操作图库的对象

            PHAssetCollectionChangeRequest *assetCollectionChangeRequest;

            

            if (assetCollection) {

                // 已有相册

                assetCollectionChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:assetCollection];

            } else {

                // 1.创建自定义相册

                assetCollectionChangeRequest = [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"百思"];

            }

            

            // 2.保存你需要保存的图片到系统相册(这里保存的是_imageView上的图片)

            PHAssetChangeRequest *assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:_imageView.image];

            

            // 3.把创建好图片添加到自己相册

       //这里使用了占位图片,为什么使用占位图片呢

      //这个block是异步执行的,使用占位图片先为图片分配一个内存,等到有图片的时候,再对内存进行赋值

            PHObjectPlaceholder *placeholder = [assetChangeRequest placeholderForCreatedAsset];

            [assetCollectionChangeRequest addAssets:@[placeholder]];

            

            

        } completionHandler:^(BOOL success, NSError * _Nullable error) {

            //弹出一个界面提醒用户是否保存成功

            if (error) {

                //[SVProgressHUD showErrorWithStatus:@"保存失败"];

            } else {

               // [SVProgressHUD showSuccessWithStatus:@"保存成功"];

            }

            

            

        }];

    }

         

  • 相关阅读:
    maven settings
    java.util.Base64
    Centos 7 下 LAMP 部署
    Cisco N3K VPC+HSRP+ospf 配置
    centos 7 下多网卡绑定+ vlan 网卡配置
    centos 7 下 cobbler 安装
    hive0.12 rcfile gzip 测试
    Hive内部表外部表转化分析(装)
    hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录
    hbase 问题记录
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/6006856.html
Copyright © 2011-2022 走看看