Профили ICC хранятся в сегментах приложения файла JPEG. Эти блоки позволяют приложениям хранить любые данные, которые им нужны, поэтому они не соответствуют спецификации JPEG. Другими словами, формат файла JPEG не определяет способ встраивания цветовых профилей, вы просто видите де-факто способы сделать это.
Поскольку сегменты приложения могут использоваться кем-либо для чего-либо, вам необходимо идентифицировать и проверить содержимое, прежде чем вы сможете с уверенностью сказать, что оно содержит профиль ICC.
Таким образом, существует три способа предоставления профилей ICC:
- Встраивая профиль ICC в сегмент приложения 02 с добавлением
ICC_PROFILE\0x00\0x01\0x01
для его идентификации. В настоящее время я не уверен, что два \0x01
означают что-то, или они всегда таковы. После этих 14 символов сохраняется фактический профиль ICC.
- Встраивая профиль ICC во встроенный файл метаданных EXIF в сегменте приложения 01.
- Путем встраивания профиля ICC во внедренный файл метаданных XAM в сегменте приложения 01. К этому добавляется
http://ns.adobe.com/xap/1.0/\0x00
.
Мне также не удалось найти какую-либо конкретную информацию. Было бы хорошо, если бы ICC сказал: «Вот как это сделать», но я пока не смог найти ничего подобного. Таким образом, насколько я знаю, любой из них может потенциально использоваться в качестве профиля ICC, и это будет зависеть от приложения от того, будет ли оно загружать профиль или нет.
Сегмент приложения 02, кажется, является обычным способом сделать это, хотя то, что вы хотите проверить, может зависеть от вашего варианта использования. Как показал другой комментарий, некоторые программы HELIOS EtherShare имеют / имеют свой собственный способ сделать это. (Я еще не подтвердил наличие профиля ICC в метаданных, однако я не выглядел так уж сложно, и меня не удивило бы, если бы вы могли найти файлы с несколькими конфликтующими профилями ICC в дикой природе.)