有关Aperture和Cocoa开发人员的问题......
我使用Aperture和@Fraser Speirs的FlickrExport插件管理我的照片并将其上传到Flickr。 FlickrExport使用Flickr照片ID(以及其他内容)在Aperture中设置自定义标签,以便您可以查看已导出的图像。我还通过电子邮件从我的iPhone上直接将照片发布到Flickr(这是我发现保持EXIF数据完好无损的唯一方法。)
我正在尝试制作一个Python脚本,该脚本将轮询我的Flickr流并识别存在于两个空间但没有Aperture自定义标签的图像,这些标签表明该照片也已上传到Flickr。它一直运作良好,直到我升级到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返回到当前系统时区(美国/东部,在我的情况下)。
对于我的系统时区设置为US / Eastern时导入的图像:
>>> 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
,我应该能够在没有任何“更正”的情况下提取时间戳。但我正在寻找一种不需要太多用户干预的解决方案。