我一直在尝试了解XMP Metadata在过去几个小时内如何在PNG文件上工作,但无法完全缠绕我的头。
如果我使用Photoshop创建PNG图像,将其保存并打开"文件信息"对话框(文件>文件信息或Ctrl Alt Alt Shift I),我可以看到一些XMP属性,例如CreateDate
,CreatorTool
或ModifyDate
。p>现在,如果我尝试使用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中。
我错过了明显的东西吗?jpegs对PNG有什么特别之处吗?我没有尝试使用Adobe的SDK来编辑XMP数据,这更好吗?
任何帮助都将不胜感激,因为这开始使我发疯:/
编辑:阅读了这篇文章后,我尝试了Adobe Bridge,它似乎并没有显示与Photoshop相同的属性。如果我在带有exiv2的XMP元数据中添加XMP元数据,则将显示在桥梁中,但是如果我在Photoshop中修改了图像,则元数据再次从桥梁中消失。
对,我终于拿到了Photoshop CC的副本,一切正常。它一定是在CC中纠正的CS5和CS6中的错误。
。我认为Photoshop CS6(13.1?)的最新更新解决了此问题。PNG图像中的ICC颜色配置文件似乎固定问题:http://forums.adobe.com/thread/1183489