JPG-如何从ICC配置文件部分APP2读取/提取数据

问题描述 投票:0回答:1

我有一个JPG文件,已经从中提取了ICC颜色配置文件部分(APP2)。但是,我不知道如何从中提取相关数据,例如白点,黑点,RGB设置等。我什至无法找到节的描述。

我发现了这一点:https://exiftool.org/提供了API,但是我不能使用它,因为它是运行后台进程的包装器。

c++ c jpeg color-profile
1个回答
1
投票

[包含ICC规范的APP2段的整体格式在ICC规范的附录B.4中进行了描述:

JPEG标准(ISO / IEC 10918-1 [2])支持特定于应用程序的数据段。这些细分可能用于标记带有ICC配置文件的图像。 APP2标记用于引入ICC配置文件标记。给定因为只有15个受支持的APP标记,所以许多应用程序可能会使用相同的标记。因此,ICC标签是通过以特殊的以空终止的字节序列开头的数据来标识的,“ ICC_PROFILE”。JPEG标记的长度字段只有两个字节长。长度字段的长度包含在总数中。因此,值0和1不是合法长度。这会将最大数据长度限制为65 533。识别序列将进一步降低这一点。由于ICC配置文件的长度很可能超过为此,需要一种机制来将配置文件分成多个块并将每个块放置在单独的标记中。一个因此必须有一种机制来按顺序识别每个块。标识符序列后跟一个字节,指示块的序列号(计数开始在1)和一个字节指示块的总数。序列中的所有块应指示相同块总数。 1字节的块计数将可嵌入配置文件的大小限制为16707345字节。

因此,要获得可用的配置文件,您需要从每个块中删除开头的“ ICC_PROFILE”,长度字段和序列号,然后将所有块按顺序放在一起。

[从此处开始,您需要查看ICC的第7节以了解详细信息。某些数据(例如光源的XYZ)很容易在轮廓标题中找到。其他的则需要根据配置文件中的数据进行计算(在某些情况下这可能是非常重要的)。

参考

ICC Spec

© www.soinside.com 2019 - 2024. All rights reserved.