JPEG中的颜色配置文件检测

Jan*_*ich 5 jpeg colors

我希望能够检测JPEG中颜色配置文件的存在。需要说明的是:我对实际进行色彩校正或对它们进行任何其他操作都不感兴趣。

我做了一些调查,但是找不到确切的信息来源。到目前为止,这是我所知道的:

  • XMP块中有一个颜色配置文件信息。XMP块位于0xFFE1 JPEG节中(与EXIF相同)。此部分的标记后是http://ns.adobe.com/xap/1.0/字符串。但是,当我删除此部分时,Photoshop仍然能够检测到颜色配置文件。

  • EXIF本身也有一个色彩空间标签(tag = 0xA001)。它只有一个在EXIF规范中定义的值:1 = sRGB。我注意到在我的图像中它取值为0xFFFF,这意味着未校准。所以不是这个标签。

  • 我做了一个实验,将一张图像保存为两种不同的颜色配置文件,除了XMP和EXIF的变化外,我还注意到可能有一个全新的JPEG部分。它以0xFFE2开头,其标记后面是字符串ICC_PROFILE。这似乎是最可能的情况。

是否有人在管理JPEG中的颜色配置文件方面有经验?我要说的是,EXIF和XMP中的信息只是元数据,重要的是ICC_PROFILE节的存在。

Seb*_*ahl 7

ICC 配置文件存储在 JPEG 文件的应用程序段中。这些块用于让应用程序存储它们需要的任何数据,因此 JPEG 规范不强制要求它们。换句话说,JPEG 文件格式没有定义嵌入颜色配置文件的方法,您只是看到了事实上的方法。

由于任何人都可以将应用程序段用于任何用途,因此您需要先识别并验证内容,然后才能确定它包含 ICC 配置文件。

因此,可以通过三种常见方式提供 ICC 配置文件:

  • 通过在应用程序段 02 中嵌入 ICC 配置文件,并在前面添加ICC_PROFILE\0x00\0x01\0x01来识别它。我目前不确定这两者是否\0x01意味着什么,或者它们是否总是如此。在这 14 个字符之后,存储实际的 ICC 配置文件。
  • 通过将 ICC 配置文件嵌入到应用程序段 01 中的嵌入式 EXIF 元数据文件中。
  • 通过将 ICC 配置文件嵌入到应用程序段 01 中的嵌入式 XAM 元数据文件中。该文件前缀为http://ns.adobe.com/xap/1.0/\0x00.

我也没有找到任何具体信息。如果 ICC 说“这就是如何做到这一点”,那就太好了,但我还没有找到任何类似的方法。因此,据我所知,其中任何一个都可能用作 ICC 配置文件,这取决于应用程序是否加载配置文件。应用程序段 02 似乎是执行此操作的常用方法,但您想要检查的内容可能取决于您的用例。正如其他评论所示,一些 HELIOS EtherShare 软件有自己的方式来做到这一点。(我还没有确认元数据中是否存在 ICC 配置文件,但是我并没有真正仔细查看,如果您能在野外找到具有多个冲突的 ICC 配置文件的文件,我也不会感到惊讶。)