在过去的几个小时中,我一直在尝试了解XMP元数据如何处理PNG文件,但是我对此不太了解。

如果使用Photoshop创建PNG图像,将其保存并打开“文件信息”对话框("file">“文件信息”或Ctrl + Alt + Shift + I),我会看到一些XMP属性,例如CreateDateCreatorToolModifyDate

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

auto image = Exiv2::ImageFactory::open(imagePath);
image->readMetadata();
Exiv2::XmpData &xmpData = image->xmpData();
exiftool -xmp:all myImage.pngexiv2 -P X 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中消失。

最佳答案

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

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

10-08 07:32
查看更多