PNG图像是否支持XMP元数据?

时间:2014-01-23 18:39:07

标签: c++ photoshop xmp exiv2

我一直在努力了解XMP元数据在过去几个小时内如何处理PNG文件,但无法完全理解它。

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

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

ModifyDate

同样适用于auto image = Exiv2::ImageFactory::open(imagePath); image->readMetadata(); Exiv2::XmpData &xmpData = image->xmpData(); exiftool -xmp:all myImage.png,甚至是GIMP(但我认为它是using exiv2 internally)。

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

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

我错过了一些明显的东西吗? PNG有什么特别的东西不适合JPEG吗?我没有尝试使用Adobe's SDK来编辑XMP数据,这样更好吗?

任何帮助都会非常感激,因为这开始让我发疯:/

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

1 个答案:

答案 0 :(得分:1)

是的,我终于拿到了Photoshop CC的副本,一切正常。它一定是CS5和CS6中的一个错误,已在CC中得到纠正。

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