6

在过去的几个小时里,我一直试图了解 XMP 元数据是如何处理 PNG 文件的,但我无法完全理解它。

如果我用 Photoshop 创建一个 PNG 图像,保存它并打开文件信息对话框(文件 > 文件信息或 Ctrl+Alt+Shift+I),我可以看到一些 XMP 属性,如CreateDate,CreatorToolModifyDate.

现在,如果我尝试使用 exiv2 打开文件并读取元数据,它似乎什么也找不到:

auto image = Exiv2::ImageFactory::open(imagePath);
image->readMetadata();
Exiv2::XmpData &xmpData = image->xmpData();

exiftool -xmp:all myImage.png,exiv2 -P X myImage.png甚至 GIMP 也是如此(但我认为它在内部使用 exiv2)。

如果在使用 Photoshop 再次保存时未删除任何添加的元数据,则不会出现这样的问题。如果不清楚,打开图像并使用 exiv2 添加 XMP 元数据,保存它,在 Photoshop 和文件信息对话框中打开图像,之前添加的属性不再存在。

奇怪的是,如果您使用 JPEG 图像执行整个过程,一切都会按预期工作:所有属性都可以从 Photoshop 和 exiv2 中看到,如果我尝试使用 exiv2 添加元数据(使用相同的代码),它会出现在Photoshop 也是如此。

我错过了一些明显的东西吗?对于 JPEG,PNG 有什么特别之处吗?我还没有尝试使用Adob​​e 的 SDK来编辑 XMP 数据,是不是更好?

任何帮助将不胜感激,因为这开始让我发疯:/

编辑:阅读这篇文章后,我尝试使用 Adob​​e Bridge,但它似乎没有显示与 Photoshop 相同的属性。如果我使用 Exiv2 添加 XMP 元数据,它们会显示在 Bridge 中,但如果我在 Photoshop 中修改图像,元数据会再次从 Bridge 中消失。

4

1 回答 1

1

对,我终于拿到了 Photoshop CC 的副本,一切正常。一定是 CS5 和 CS6 中的一个 bug,已经在 CC 中更正了。

我认为最近更新的 Photoshop CS6(13.1?)解决了这个问题。它似乎也解决了 PNG 图像中的 ICC 颜色配置文件的问题:http ://forums.adobe.com/thread/1183489

于 2014-01-27T10:28:52.587 回答