IOS 照片库获取给定照片的相册名称

Posted

技术标签:

【中文标题】IOS 照片库获取给定照片的相册名称【英文标题】:IOS Photo Library fetch album name for a given photo 【发布时间】:2016-08-03 07:48:41 【问题描述】:

我一直在到处寻找,但无法找到答案。

ios PhotosFramework 中,我如何获取图像/PHAsset 并找出它分配给的所有收藏/专辑?

我已经知道如何从那里获取所有专辑的列表,我还可以获取每个专辑中的所有图像。但是我该如何反过来做 - 即对于给定的 PHAsset 如何获取分配给它的专辑/集合的名称。

这是我必须获取相机胶卷中所有专辑列表的代码:

-(void) listAllAlbums

    PHFetchOptions *userAlbumsOptions = [PHFetchOptions new];
    userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"];

    PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:userAlbumsOptions];

    NSLog(@"---------  entered %s  ------------- ", __PRETTY_FUNCTION__);

    [userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) 
        NSLog(@"album title %@", collection.localizedTitle);
    ];

    NSLog(@"---------  end of %s  ------------- ", __PRETTY_FUNCTION__);


谢谢

【问题讨论】:

【参考方案1】:

套用旧的 Apple 广告...有一个 API。

如果您有PHAsset,您可以使用fetchAssetCollectionsContainingAsset:withType:options: 获取包含它的专辑集。如果您只想要用户创建的专辑,请将PHAssetCollectionTypeAlbum 传递给 type 参数;如果您还想要智能相册(如相机胶卷,或其他自动收集的相册,如全景或屏幕截图),请再次调用并传递PHAssetCollectionTypeSmartAlbum

调用之后,您可以枚举结果并读取每个结果的localizedTitle。 (顺便说一句,PHFetchResult 支持NSFastEnumeration,所以你不必使用enumerateObjectsUsingBlock,除非出于某种原因……你可以只使用for-in 循环。)

【讨论】:

谢谢瑞克斯特!这正是我所需要的。感谢您的帮助。

以上是关于IOS 照片库获取给定照片的相册名称的主要内容,如果未能解决你的问题,请参考以下文章

PHPhotoLibrary 获取相册和照片信息

如何在文档中显示所有视频以及相册中的照片?

从IOS中的相册或库中删除照片[关闭]

Android开发之获取相册照片和获取拍照照片

如何从我的照片流相册中获取照片

[iOS] photoKit获取所有照片