我正在编写一个应用程序来读/写图像的元数据(它将原始文件转换为jpeg/tiff),我需要将有关相机/模式/...的元数据写入生成的jpeg。
我知道我可以使用exif来做这件事,在windows中,我正在使用GDI来做这件事。但是我正在从adobe上阅读关于xmp和xmp sdk的信息。
我想知道我应该用哪一个?exif还是xmp?
它们是如何相互联系的呢?
为什么一个人可以选择编写exif元数据,而其他人可以选择XMP?选择其中任何一个的优缺点是什么?
我在windows (visual studio 2012)上用c++写文章。
发布于 2014-02-03 19:48:09
如果您正在编写JPEG或TIFF格式,我认为您应该坚持使用Exif。
所有的TIFF格式阅读器将能够解析Exif,因为Exif是TIFF (具有特殊Exif定义标签的子IFD)的子集。大多数"JPEG“阅读器也知道如何解析Exif/TIFF。
现在,您当然也可以将XMP添加到文件中,但我建议您除了使用普通的Exif之外,还可以这样做,而且只有在确实需要时才这样做。
XMP确实允许更丰富的元数据。但是,由于您获得的元数据来自相机原始数据文件,我认为它们直接映射到Exif标签,因为Exif是由数码相机行业开发的,完全用于您所描述的用途。
所以,基本上:使用Exif是因为它有更好的工具支持。仅在需要时添加XMP,以获得更丰富的元数据。
发布于 2014-06-10 20:31:03
XMP确实将值映射到exif标记。
EXIF和XMP都是图像元数据的丰富来源。
XMP的好处是它易于阅读,任何支持XMP的应用程序(就像所有Adobe产品一样)都可以操作这些属性。
XMP从图像中的本地值派生这些值,因此XMP基本上提供了图像中exif块中的属性之间的映射,并按照ADOBE XMP SDK文档中的定义在XMP命名空间中协调这些值。
使用XMP SDK操作元数据的好处是,在读取或写入时,协调不同图像元数据格式(如exif、IPTC或XMP)的责任将转移到XMP SDK。
如果对XMP属性进行了任何更改,它将反映回图像中的exif块。类似地,如果任何非xmp感知的应用程序在没有修改相应的XMP值的情况下修改了EXIF元数据,则在读取操作时,XMP SDK将把该更改协调到XMP值中,并且在写入时,该更改将被保存回来。
使用XMP SDK操作元数据基本上更容易,因为您可以将许多格式特定的细节留给SDK来处理。
有关不同图像元数据来源的更多信息,请访问on the Metadata Working Group.
完整的规范可从here.下载
https://stackoverflow.com/questions/21380359
复制相似问题