XMP 是什么
可扩展元数据平台(Extensible Metadata Platform,简称 XMP)是一种把元数据存成一小段 XML 文档(称为数据包)的方式,数据包可以放在文件内部,也可以放在文件旁边。Adobe 于 2001 年推出 XMP,2012 年它成为 ISO 标准 ISO 16684-1。
数据包可以放在好几个地方:
- 在 JPEG 中,是一个标有 XMP 命名空间的 APP1 段;
- 在 TIFF 中,是标签 700;
- 在 PNG 中,是一个
iTXt块,名为XML:com.adobe.xmp; - 在 HEIC 文件中,是一个独立的元数据项;
- 在 RAW 文件旁边,是一个 .xmp 附属文件。
XMP 通篇使用 Unicode,也没有 IIM 那些很小的字节限制。属性归属于命名空间,写成 dc: 或 xmpRights: 这样的前缀。
由于 XMP 可以扩展,任何人都能定义命名空间。本页介绍的权利属性来自几乎所有读取软件都能理解的三个命名空间:Dublin Core(dc:)、XMP Rights Management(xmpRights:)和 Photoshop 的命名空间(photoshop:)。
权利属性
下面是描述作者身份和权利的属性,以及 IPTC 照片元数据标准给它们起的名字:
dc:rights:Copyright Notice(版权声明)。与 EXIF Copyright 和 IPTC 2:116 是同一条版权声明。dc:creator:Creator(创作者)。一个有序的姓名列表,对应 IPTC 2:80 By-line 和 EXIF Artist。photoshop:Credit:Credit Line(署名行),对应 IPTC 2:110。xmpRights:UsageTerms:Rights Usage Terms(使用条款)。说明图像可以如何使用的自由文本。xmpRights:WebStatement:Web Statement of Rights(网络权利声明)。一个链接,指向说明图像权利的页面。xmpRights:Marked:在 Adobe 应用中显示为 Copyright Status(版权状态)。xmpRights:Owner:一个列出版权所有者姓名的列表。plus:CopyrightOwner:来自 IPTC Extension 的结构化所有者记录,包含名称和标识符。
IPTC Core 与 IPTC Extension
2000 年代中期,IPTC 把它的 IIM 字段迁移到 XMP 上,形成 IPTC Core。凡是已有合适属性的,IPTC Core 就直接沿用:Copyright Notice 成了 dc:rights,Credit Line 成了 photoshop:Credit。没有现成位置的字段则放进 Iptc4xmpCore 命名空间,例如创作者的联系方式。
IPTC Extension 出现得更晚,增加了更丰富的字段,其中包括取自 PLUS 联盟词表的授权属性。IPTC Core、IPTC Extension 和 IIM 形式共同构成了 IPTC 照片元数据标准。
多语言替代
dc:rights 和 xmpRights:UsageTerms 属于多语言替代类型:每种语言可以各存一个值,其中默认值标为 x-default。大多数读取软件只显示默认值,忽略其余的。如果你只写一种语言,就把它写成默认值。
dc:creator 是一个有序列表。共同署名的两位摄影师会以两个条目出现,顺序由你决定。
Marked:受版权保护、公有领域或未知
xmpRights:Marked 是一个布尔值,实际上有三种状态:
- True:图像受版权保护。Adobe 应用显示为受版权保护。
- False:图像属于公有领域。Adobe 应用显示为公有领域。
- 不存在:状态未知。
Photoshop 的“文件简介”和 Lightroom Classic 的 IPTC 面板都提供这个菜单。当这个属性为 True 时,有些软件还会在文件名旁显示一个 ©。在写版权声明的同时把它设为 True,可以让文件的表述前后一致。
嵌入的数据包与附属文件
对于 JPEG、HEIC、PNG 和 TIFF,XMP 数据包存在文件内部,只要没有工具删除它,文件走到哪里它就跟到哪里。对于 RAW 文件,大多数软件会另外写一个同名的 .xmp 附属文件,因为这样可以避免写入专有格式。
有些软件还会把元数据保存在自己的图库里,只在你要求时才写入文件。以 Lightroom Classic 为例,你添加的元数据会一直留在图库中,直到你把它存储到文件或导出文件。在此之前,其他程序看不到它。
要自己读取数据包,exiftool -XMP:All photo.jpg 会按命名空间分组列出每个 XMP 属性。这是查看 dc:rights 和 IPTC 版权声明是否一致的快捷方法。
让 XMP 与 EXIF 和 IPTC 保持一致
由于 XMP 重复了 EXIF 和 IIM 已有的字段,一张照片可能在 XMP 里说一套,在别处说另一套。Metadata Working Group 的指南要求写入方同时更新所有这些字段,并为读取方规定了它们不一致时该相信哪一个的规则。各层不一致的照片属于冲突照片,你可以用版权检查工具看看每一层分别写了什么。
Copyrighted 根据 Rights Profile(权利配置)写入这些属性:版权声明、创作者、署名、使用条款、网络权利声明、所有者和版权状态,并在存在对应字段时同时写入 EXIF 和 IPTC 中的对应项。对于 RAW 文件,XMP 会写进附属文件。
问答
dc:rights 是什么?
它是 XMP 用来存放版权声明的 Dublin Core 权利属性。IPTC 照片元数据标准把 Copyright Notice 对应到它,所以它应当与 EXIF Copyright 和 IPTC 2:116 存放同样的文本。
xmpRights:Marked 有什么作用?
它记录版权状态:True 表示受版权保护,False 表示公有领域,不存在则表示未知。Adobe 应用把它显示为“版权状态”菜单。
XMP 存放在 JPEG 的什么位置?
存放在一个以 XMP 命名空间标识符开头的 APP1 段中。非常大的数据包可以延续到扩展 XMP 段中。RAW 文件则通常把 XMP 存放在单独的 .xmp 附属文件里。