美文网首页
1 - 读取相册

1 - 读取相册

作者: 一双鱼jn | 来源:发表于2017-10-31 10:36 被阅读31次

    1 如何读取图片

    使用 photos库 , iOS8之后的

    PhotoKit 库的常用类

    • PHAsset - 一个图片资源
    • PHFetchOptions - 获取资源时的选项,用于过滤资源
    • PHAssetCollection - PHCollection 的子类,表示一个相册或者一个时刻,或者是一个「智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等,如下图所示)
    • PHFetchResult - 一系列资源的集合。可以是相册的集合,也可以是图片的集合
    • PHImageManager 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个 PHImageRequestOptions 控制资源的输出尺寸等规格
    • PHImageRequestOptions 控制加载图片时的一系列参数

    从PHAssetCollection 获取的可以是相册集合也可以是图片集合。都通过PHFetchResult来封装起来

    1 如何拿到相册

        PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeMoment subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
    
    参数
    • PHAssetCollectionType 枚举
      • PHAssetCollectionTypeMoment 选项 返回的就是’时刻’里面的相片集合
      • PHAssetCollectionTypeSmartAlbum 返回的是所有的相册的集合

    2 拿到了相册,从相册里拿图片

    2.1 如果上一步拿到的是所有相册的集合,那就遍历所有的相册,从相册中拿图片
    // 遍历所有相册
    for (NSInteger i = 0; i < smartAlbums.count; i++) {
        PHCollection *collection = smartAlbums[i];
        NSLog(@"%@", collection);
    
        if ([collection isKindOfClass:[PHAssetCollection class]]) {
            PHAssetCollection *assetCollect = (PHAssetCollection *)collection;
            
            // 从相册中获取图片集合
            PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:assetCollect options:nil];
            
            for (NSInteger i = 0; i < fetchResult.count; i++) {
                PHAsset *asset = fetchResult[i];
                NSLog(@"%@", asset);
            }
        }
    
    }
    
    2.2 如果直接拿到的是’时刻’相册,那就遍历这个相册,拿到所有图片
    for (NSInteger i = 0; i < smartAlbums.count; i++) {
        // 拿到图片集合,再拿图片
        PHFetchResult *asset = [PHAsset fetchAssetsInAssetCollection:smartAlbums[i] options:nil];
        NSLog(@"%@",asset.firstObject);
    }
    

    图片的唯一标示 localIdentifier

    相关文章

      网友评论

          本文标题:1 - 读取相册

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