根据“人脸”元数据获取 PHAsset

Posted

技术标签:

【中文标题】根据“人脸”元数据获取 PHAsset【英文标题】:Get PHAssets based on "Face" metadata 【发布时间】:2015-04-01 16:38:51 【问题描述】:

在 Mac 中使用照片用户可以在照片中标记人物。然后,这些数据会同步到云端,在那里他们可以在 ios 上的照片中进行面部搜索。元数据的类型似乎是“人脸”。是否可以获得与其中一张面孔相关的所有资产?我想抓取其中有某个人的所有图像。您可以在 iOS 中的照片搜索中执行此操作,因此我希望它也对其他开发人员开放。

有人有什么想法吗?

提前致谢。

【问题讨论】:

【参考方案1】:

Apple 发布了一个用于访问 Apple 照片的 SDK,称为 Photo Kit。在文档中,您将找到对照片应用程序和照片云的 API 访问。但是,如果您正在寻找一种 HTTP API,我认为尚未公开宣布。

如果您只需要访问照片 MacOS 应用程序上的数据,我建议您深入研究位于照片库数据库目录中的 SQLite photos.db。

/Users/[yourUserName]/Pictures/Photos Library.photoslibrary/database/photos.db

本周末我正在开展一个项目,该项目需要类似的面部数据,并将记录我的进度。这是一个示例 SQLite 查询,您可以使用它来获取所有面孔、照片和相应的人:

SELECT *, RKFace.modelId AS fId
FROM RKFace
JOIN RKMaster ON RKMaster.modelId = RKFace.imageModelId
LEFT JOIN RKFaceGroup ON RKFaceGroup.modelId = RKFace.faceGroupId
LEFT JOIN RKFaceCrop ON RKFaceCrop.faceId = RKFace.imageModelId
LEFT JOIN RKFacePrint ON RKFacePrint.faceId = RKFace.imageModelId
LEFT JOIN RKPerson ON RKPerson.modelId = RKFace.personId;

我希望这会有所帮助。 :-)

【讨论】:

【参考方案2】:

目前 iOS 上还没有此类 API。

【讨论】:

以上是关于根据“人脸”元数据获取 PHAsset的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 通过 PHAsset 访问 UIImage 的元数据

为啥 PHAsset creationDate 与 exif 元数据不同?

PHAsset 视频 EXIF 元数据检索

从 PHAsset 中提取元数据返回意外的 nil 值

使用 mediaType Video 从 PHAsset 修改元数据失败

PHAsset:使用元数据保存新图像