zoukankan      html  css  js  c++  java
  • 自定义实现从系统相册中取照片

    //查看是否授权了。

        if ([PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized){

            NSLog(@"没有授权");

        }

        

         //PHAsset 可以表示一个图片的信息  相册信息

         //PHFetchResult 数组

    //1.读取所有相册的信息

        PHFetchResult *collectonResult = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumScreenshots|PHAssetCollectionSubtypeSmartAlbumVideos|PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];

        

        //2. 遍历整个相册,对某一个具体相册进行操作

        [collectonResult enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

            

            //这个相册的信息

            PHAssetCollection *assetCollection = (PHAssetCollection *)obj;

            

            //按照创建时间的先后顺序查找

            PHFetchOptions *option = [[PHFetchOptions alloc] init];

            option.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];

            

            //获取这个相册里面所有图片的信息

            PHFetchResult *albumResult = [PHAsset fetchAssetsInAssetCollection:assetCollection options:option];

            

            //获取相册的名字

            NSString *albumName = assetCollection.localizedTitle;

            //这个相册的相片个数

            NSInteger count = albumResult.count;

            

            NSLog(@"%@ (%ld)", albumName, count);

            

            //读取相册里面的最近的一张图片信息PHAsset

            PHAsset *lastAsset = [albumResult lastObject];

            

            /*

             targetSize: 需要读取的图片的尺寸

             contentMode: 图片以什么方式拉伸 AspectFit

             */

            //读取图片的选项 异步

            /*

             resizeMode:

             exact:高清图片 原图 当选择原图 那么targetSize必须是原图的大小

                   PHImageManagerMaximumSize

             fast: 以最快的速度读取 (像素低)

             none:

             */

            PHImageRequestOptions *imageOptions = [[PHImageRequestOptions alloc] init];

            imageOptions.resizeMode = PHImageRequestOptionsResizeModeFast;

            

            __weak ViewController *weakSelf = self;

            [[PHImageManager defaultManager] requestImageForAsset:lastAsset targetSize:CGSizeMake(80, 80) contentMode:PHImageContentModeAspectFit options:imageOptions resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {

                weakSelf.iconImageView.image = result;

            }];

        }];

  • 相关阅读:
    使用PowerShell脚本来轮训Exchange数据库的状态
    使用NUnit在.Net编程中进行单元测试【转载】
    利用NUnit对类、方法进行原子级测试
    单元测试的重要性
    不用临时变量,只用11个字符交换两个变量的值——窥视C#编译原理的冰山一角
    博客园
    c++的float(NaN)
    mysql之innodb的锁分类
    配置alchemc时cygwin下面,特别要注意路径
    关于异步调用Discuz!NT接口
  • 原文地址:https://www.cnblogs.com/damonWq/p/5342876.html
Copyright © 2011-2022 走看看