Colors JPEG中的颜色轮廓检测

Colors JPEG中的颜色轮廓检测,colors,jpeg,Colors,Jpeg,我想能够检测到JPEG中存在的颜色配置文件。要明确的是:我对实际执行颜色校正或用它们做任何其他事情不感兴趣 我做了一些调查,但找不到任何确切的信息来源。以下是我目前所知道的: XMP块中有颜色配置文件信息。XMP块位于0xFFE1JPEG部分(与EXIF相同)。本节的标记后面是字符串。然而,当我剥离这一部分时,Photoshop仍然能够检测颜色配置文件 EXIF本身也有一个颜色空间标记(标记=0xA001)。它只有一个在EXIF规范中定义的值:1=sRGB。我注意到,在我的图像中,它的值为0x

我想能够检测到JPEG中存在的颜色配置文件。要明确的是:我对实际执行颜色校正或用它们做任何其他事情不感兴趣

我做了一些调查,但找不到任何确切的信息来源。以下是我目前所知道的:

  • XMP块中有颜色配置文件信息。XMP块位于0xFFE1JPEG部分(与EXIF相同)。本节的标记后面是字符串。然而,当我剥离这一部分时,Photoshop仍然能够检测颜色配置文件

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

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


有没有人有管理JPEG颜色配置文件的经验?我想说,EXIF和XMP中的信息只是元数据,重要的是ICC_配置文件部分的存在。

以下是关于JPEG格式的ICC配置文件的信息:


这是来自谷歌缓存。

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

因为应用程序段可以被任何人用于任何事情,所以在确定它包含ICC概要文件之前,您需要识别和验证内容

因此,提供ICC配置文件的常用方法有三种:

  • 通过在应用程序段02中嵌入ICC配置文件,在其前面加上
    ICC\u profile\0x00\0x01\0x01
    ,用于识别它。我目前不确定这两个
    \0x01
    是否有任何意义,或者它们是否总是这样。在这14个字符之后,将存储实际的ICC配置文件
  • 通过在应用程序段01的嵌入式EXIF元数据文件中嵌入ICC配置文件
  • 通过在应用程序段01的嵌入式XAM元数据文件中嵌入ICC配置文件。这是以
    http://ns.adobe.com/xap/1.0/\0x00
我也没有找到任何具体的信息。如果国际刑事法院说“这就是如何做到这一点”那就太好了,但我还没有找到这样的答案。因此,据我所知,其中任何一个都可能被用作ICC配置文件,这取决于应用程序是否加载配置文件。
应用程序段02似乎是执行此操作的常用方式,尽管您想要检查的内容可能取决于您的用例。正如另一条评论所示,一些HELIOS EtherShare软件有自己的方式。(我还没有确认元数据中是否存在ICC配置文件,但是我还没有仔细查看,如果您能在野外找到多个ICC配置文件冲突的文件,我也不会感到惊讶。)

0x01、0x01是序列号。第一个是当前序列号,第二个字节是总计数。这用于将ICC拆分为多个APP2段(段大小的JPEG限制为~64 KB)。所以基本上它说的是1对1。