以编程方式从 iPhoto 图库中读取
我想创建一个连接到 iPhoto 图库的应用程序。所以现在我想从图书馆阅读事件和图片本身。
有没有一种优雅/简单的方法来做到这一点,或者我是否必须手动读取 iPhoto 用户数据的捆绑结构?
到目前为止,我只找到了一个拍照器: Is there a UIImagePicker for the Mac 桌面
更新:我发现了另一个相关的 SO 帖子:在 cocoa 应用程序中选择 iPhoto 图像
I want to create an Application that connects to the iPhoto Library. So now I would like to read the Events and the pictures themselves from the library.
Is there an elegant / easy way to do this or do I have to manually read the Bundle Structure of the iPhoto User Data?
So far I have only found a picture taker: Is there a UIImagePicker for the Mac Desktop
Update: I found another relevant SO post: Selecting iPhoto images within a cocoa application
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 NSAppleScript 来完成。这是我的应用程序中的一些复制/粘贴,只是为了展示这个想法而进行了一些修改。
您可以执行相同的操作来查找图像
You can do it with NSAppleScript. This is some copy/paste from my app, hacked up a bit just to show the idea.
You can do the same thing to find the images
如果在 App Store 上发布应用程序,您现在需要使用沙盒,这会阻止之前的 AppleScript 方法工作(iPhoto 应用程序启动,但返回空集)。
iPhoto 库由包含照片、数据库和 XML 文件的目录结构组成。内容随 iPhoto 的每个版本而变化,因此手动访问这些文件时要小心。
如果您只需要专辑详细信息,您可以解析文件AlbumData.xml。
如果您想要照片,您可以浏览Masters 文件夹。文件结构遵循日期而不是 iPhoto 中配置的集。
有关 iPhoto 图库内部结构的更多信息,请参见此处:
http://www.fatcatsoftware.com/iplm/Help/iphoto%20library %20internals.html
大多数数据库都是 SQLite 格式,因此可以通过 Objective C 以编程方式访问,不过您可以预期不同版本的数据库之间的架构会发生变化i照片。感兴趣的主要数据库是 Database/apdb 中的 Library.apdb 和 Properties.apdb。
如果您仍然想使用 Apple 脚本方法,这里是之前答案的一个版本,其中包含 Apple 脚本执行部分:
If releasing apps on the App Store you are now required now required to use the Sandbox, this stops the previous AppleScript method from working (the iPhoto app launches but an empty set is returned).
iPhoto libraries consist of a directory structure containing photos, databases and XML files. The contents changes with each version of iPhoto so be careful if manually accessing these files.
If you just want the album details you can parse the file AlbumData.xml
If you would like photos you can browse the Masters folder. The files structure follows date rather than by the sets configured in iPhoto.
More information can be found on the internals of the iPhoto library here:
http://www.fatcatsoftware.com/iplm/Help/iphoto%20library%20internals.html
The majority of the databases are in SQLite format and so can be programmatically accessed through Objective C, though again you can expect schema changes between different versions of iPhoto. The main databases of interest are Library.apdb and Properties.apdb in Database/apdb.
If you still want to use the Apple Script method, here's a version of the previous answer with the Apple script execution part included: