exif和xmp之间有什么关系?它们是否可以互换使用?

4
我正在编写一个应用程序,用于读取/写入图片的元数据(它将原始文件转换为JPEG/TIFF格式),我需要在生成的JPEG中写入有关相机/模式等的元数据。
我知道可以使用exif,在Windows上我正在使用GDI来实现。但我正在阅读有关Adobe的XMP和XMP SDK的信息。
我想知道应该选择哪一个?是exif还是xmp?
它们之间有何关系?
为什么有的人会选择编写exif元数据,而其他人则可能选择XMP?选择任何一种的利弊是什么?
我在Windows上使用C++编写(Visual Studio 2012)。

也许更适合在http://photo.stackexchange.com/上提出这个问题。 - Micha
2个回答

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

XMP从图像中的本地值派生出这些值,因此基本上XMP提供了映射图像中exif块中的属性并使这些值与ADOBE XMP SDK文档中定义的XMP名称空间中的值相一致的功能。
使用XMP SDK操纵元数据的好处在于,在读取或写入时,不同图像元数据格式(如exif,IPTC或XMP)之间的协调责任被转移给XMP SDK。

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

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

关于不同图像元数据来源的更多信息,请参见元数据工作组。

完整规范可从此处下载。


1

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

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

现在,您当然可以将XMP添加到文件中,但我建议您除了普通的Exif之外再添加它,只有在真正需要时才这样做。

XMP确实允许更丰富的元数据。但由于您拥有的元数据来自相机RAW文件,我认为它们直接映射到Exif标记,因为Exif是数字相机行业为您描述的确切用途而开发的。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接