exif和xmp之间有什么关系?它们可以互换吗?

时间:2014-01-27 12:02:03

标签: c++ visual-studio metadata exif xmp

我正在编写一个读取/写入图像元数据的应用程序(它将原始文件转换为jpeg / tiff),我需要将有关camera / mode / ...的元数据写入生成的jpeg。

我知道我可以使用exif执行此操作,而在Windows中我使用GDI来执行此操作。但我正在阅读有关adobe的xmp和xmp sdk的信息。

我想知道我应该使用哪一个? exif还是xmp?

他们是如何相互关联的?

为什么有人可以选择编写exif元数据,而其他人可能会选择XMP?选择其中任何一个的优点/缺点是什么。

我在Windows上用c ++编写(visual studio 2012)

2 个答案:

答案 0 :(得分:0)

如果您正在编写JPEG或TIFF格式,我认为您应该坚持使用Exif。

所有TIFF格式阅读器都能够解析Exif,因为Exif是TIFF的子集(具有特殊Exif定义标签的子IFD)。大多数“JPEG”读者也知道如何解析Exif / TIFF。

现在,您当然可以将XMP添加到文件中,但我建议您除了普通的Exif之外还要执行此操作,并且只有在您确实需要它时才这样做。

XMP确实允许更丰富的元数据。但是,由于您获得的元数据来自相机RAW文件,我认为它们会直接映射到Exif标签,因为Exif是由数码相机行业开发的,完全符合您的描述。

所以,基本上:与Exif一起使用,因为它有更好的工具支持。仅在您需要时添加XMP,以获得更丰富的元数据。

答案 1 :(得分:0)

XMP确实将值映射到exif标签 EXIF和XMP都是丰富的图像元数据来源 XMP的好处是它易于阅读,任何XMP感知应用程序(如所有Adobe产品)都可以操作这些属性。

XMP从图像中的本机值派生值,因此基本上XMP在图像中的exif块中的属性之间提供映射,并在ADMPE XMP SDK文档中定义的XMP名称空间中协调这些值。
使用XMP SDK操作元数据的好处是,在读取或写入时,不同图像元数据格式(如exif,IPTC或XMP)之间协调的责任将转移到XMP SDK。

如果对XMP属性进行了任何更改,它将反映回图像中的exif块。类似地,如果任何非XMP感知应用程序修改了exif元数据而未修改相应的xmp值,则在读取操作时,XMP SDK会将此更改协调为XMP值,并且在写入时,此更改将被保存回来。

使用XMP SDK操作元数据基本上更容易,因为您可以将大量特定于格式的详细信息留给SDK来处理。

有关不同图像元数据来源的更多信息,请on the Metadata Working Group.

可以从here.

下载完整的规范