1

我有一个 php 脚本,它使用 Flickr API 从 Flickr 下载我的图像,解析相关的文本和元数据,并将版本保存在我的服务器上,并将元数据嵌入图像文件中。我使用历史图像并希望在我的智能手机上按日期顺序显示它们(我正在 Android 上试用 F-Stop 应用程序)。

我已经使用 PHP JPEG 元数据工具包 - http://www.ozhiker.com/electronics/pjmt/ - 通过将 XMP 数据写入文件来进行元数据更新。但是对于我的生活,我似乎无法让“拍摄日期”工作!

以下是一些示例图像:

这是来自 Flickr 的原始文件,日期设置为我创建文件 http://metapicz.com/#landing?imgsrc=http%3A%2F%2Fwww.whatsthatpicture.com%2Ftools%2FPHP_JPEG_Metadata_Toolkit%2Fflickr 的日期。 jpg(如果要在本地检查,请右键单击图像并保存)

这是我第一次尝试使用该工具包。它更新了 XMP 'DateCreated' 但没有更新 EXIF CreateDate 或 XMP CreateDate http://metapicz.com/#landing?imgsrc=http%3A%2F%2Fwww.whatsthatpicture.com%2Ftools%2FPHP_JPEG_Metadata_Toolkit%2Fprocessed_orig.jpg

所以我然后强迫它改变 XMP CreateDate http://metapicz.com/#landing?imgsrc=http%3A%2F%2Fwww.whatsthatpicture.com%2Ftools%2FPHP_JPEG_Metadata_Toolkit%2Fprocessed_new.jpg。然后,这会在 Windows 资源管理器中显示为创建日期,但不会显示在 F-Stop 应用程序中。

所以我想知道仍然是 Flickr 的值的 EXIF CreateDate 是否具有优先权,所以我删除了该元数据(据我所知,该工具集不允许您修改 EXIF)http:// metapicz.com/#landing?imgsrc=http%3A%2F%2Fwww.whatsthatpicture.com%2Ftools%2FPHP_JPEG_Metadata_Toolkit%2Fprocessed_new2.jpg

在这些情况下,F-Stop 都不能正确解释日期。我已经联系了开发人员,但我实际上并不认为是应用程序有问题,我认为这是文件中的元数据格式。那是因为当我在 Windows 资源管理器中显示该原始文件并更改那里的拍摄日期时,该文件可以完美运行http://metapicz.com/#landing?imgsrc=http%3A%2F%2Fwww.whatsthatpicture.com%2Ftools%2FPHP_JPEG_Metadata_Toolkit %2Fflickr_win.jpg

任何人都可以告诉我发生了什么,或者建议我可以解决这个问题的另一种方式吗?

4

1 回答 1

0

好的,我现在已经解决了这个问题。

似乎 FStop 应用程序无法从 xmp 文件中读取日期,因此它要么从文件开头的 JFIF/App12/"Ducky" 段读取它们,要么如果不存在它正在读取文件时间戳。当然,这意味着我用所有元数据创建单个 xmp 配置文件的计划行不通。

我切换到 ImageMagick,但遇到了同样的问题——我可以剥离配置文件并加载/更改 xmp 配置文件,但无法立即找到一种方法来让它创建/更新 JFIF 段中的日期值。

所以最后我求助于通过 exec 命令调用 exiftool exec("exiftool -AllDates='1863-07-23 12:00:00' -overwrite_original testfile.jpg"); (我将把它从 AllDates 改掉,只设置 CreateDate,但我需要测试一下)

有点笨拙,但它的工作原理!无论如何,我都在使用 Imagick 来修改实际图像,所以如果有人知道我可以在那里修改这些标题的方法,那么我会很高兴听到它。

于 2014-01-14T23:08:28.167 回答