Aperture 和 Cocoa 开发人员的问题……</p>
我使用 Aperture 和 @Fraser Speirs 的 FlickrExport 插件来管理我的照片并将它们上传到 Flickr。FlickrExport 使用 Flickr 照片 ID(以及其他内容)在 Aperture 中设置自定义标签,以便您查看已导出的图像。我还通过电子邮件从我的 iPhone 直接将照片发布到 Flickr(我发现保持 EXIF 数据完整的唯一方法)。
我正在尝试编写一个 Python 脚本,该脚本将轮询我的 Flickr 流并识别两个空间中都存在但没有指示照片也上传到 Flickr 的 Aperture 自定义标签的图像。在我升级到 Lion 之前,它通常运行良好,现在我发现了一些漏洞。
Flickr 和 Aperture 的时区处理非常糟糕/不存在,并且 EXIF 时间戳不捕获时区。图片的时间戳只是说“7 月 14 日上午 10:03”。如果我在将图像导入 Aperture 时将计算机的系统时区设置为波士顿(美国/东部),Aperture 会将其显示为7/14/11 10:03:00 AM EDT
. 如果我再次导入相同的图像,但将系统时区设置为洛杉矶(美国/太平洋),则图像的日期显示为7/14/11 10:03:00 AM PDT
. 好的,这是令人困惑和错误的(如果没有表达时区,则不应该暗示)。
现在让我们切换域。我正在使用 ScriptingBridge 通过 Python 与 Aperture 进行交互。当我检索 ImageDate EXIF 标记的值时返回的 NSDate 已更正为当前系统时区(在我的情况下为美国/东部)。
对于我的系统时区设置为美国/东部时导入的图像:
>>> aperture = ScriptingBridge.SBApplication.applicationWithBundleIdentifier_("com.apple.Aperture")
>>> aperture.selection()[0].EXIFTags().objectWithName_("ImageDate").value().get()
2011-07-14 10:43:37 −0400
对于我的系统时区设置为美国/太平洋时导入的图像:
>>> aperture.selection()[0].EXIFTags().objectWithName_("ImageDate").value().get()
2011-07-14 13:43:37 −0400
所以 Aperture 似乎认为它知道图像的时区是什么(即使没有提供),但似乎没有办法通过 ScriptingBridge 返回它。那么,给定这个 NSDate 对象,有什么方法可以在其原始时区中找到日期和时间,即使我不知道原始时区是什么?这是否可以通过 Aperture 插件 API 来实现?
请注意,如果我使用批量更改命令执行时间调整并设置时区,或者通过导入窗格进行相同的调整,则会添加两个自定义标签:pictureTimeZoneName
和cameraTimeZoneName
。如果pictureTimeZoneName
存在,我应该能够在没有任何“更正”的情况下提取时间戳。但我正在寻找一种不需要太多用户干预的解决方案。