代码之家  ›  专栏  ›  技术社区  ›  Laurent Crivello

如何从MacOS的照片库中获取所有相位集

  •  4
  • Laurent Crivello  · 技术社区  · 6 年前

    我想解析MacOS照片库中的所有图像,使用 PHAsset . 然而,我发现的所有示例仅适用于iOS,如下面的一个示例,其中检索资产的最后一行在macos framework上不可用:

        NSMutableArray *photos = [[NSMutableArray alloc] init];
        PHFetchOptions *allPhotosOptions = [[PHFetchOptions alloc] init];
        allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
    
     // Below compilation error as fetchAssetsWithMediaType is only on iOS framework
        PHFetchResult *allPhotos = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];
    

    我应该在MacOS(10.13版)上使用什么fetchAssets命令,或者有其他方法吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   rickster    6 年前

    macOS中没有照片框架,或者至少是该框架的主要子集,该框架为应用程序提供对整个照片库的读/写访问权限。

    macOS中有照片和PhotoUI,但仅支持特定的应用程序扩展功能:

    • 照片编辑扩展。用户在单个资产的编辑模式下从照片应用程序调用这些,并提供对该资产的照片/视频数据的直接访问,因此它甚至不使用 PHAsset
    • 照片项目扩展。这些涉及到资产集合和有选择地加载每个资产的数据,因此 相位集 / PHImageManager 系统存在。然而,与iOS相比,它仍然是一个较小的子集(仅限于项目扩展所需的内容,如获取该项目中的资产),并且它仅可供应用扩展访问,而非独立应用。

    如果你想在macOS上使用完整的照片框架,最好的选择是 file a feature request with Apple .

        2
  •  1
  •   Brian Webster    4 年前

    从macOS 10.15 Catalina开始,照片和PhotoUI框架现在可以在Mac上使用,适用于Catalyst和AppKit应用程序。所以你现在应该能够将几乎所有使用PhotoKit的iOS代码转移到你的Mac应用程序中,只要它的最低系统要求是10.15。