【问题标题】:Color profile detection in JPEGJPEG 中的颜色配置文件检测
【发布时间】:2009-09-22 10:46:34
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: colors jpeg


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 0x01、0x01 是序号。第一个是当前序列号,第二个字节是总计数。这用于将 ICC 拆分为多个 APP2 段(段大小的 JPEG 限制约为 64 KB)。所以基本上它说的是 1 of 1。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2014-04-13
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多