Также спектральный калькулятор обычно справляется с задачей извлечения колориметрической таблицы из профиля, но у него есть ограничение на размер профиля до 2 мегабайт (ограничение безопасности сервера). А профили с высокой гранулярностью могут "весить" и более 2 мегабайт. Клиентский яваскрипт принципиально не заточен на работу с файлами по соображениям безопасности, поэтому работа с любыми файлами в спектральном калькуляторе - это серверные функции на php.
Если файл icc более 2 мегабайт, можно воспользоваться утилитой xicclu.exe из ArgyllCMS. У нее тоже есть на сегодня ограничение - она не работает с профилями 4 версии, но специалисты обычно и не сохраняют профили версии 4, поддержанной не всеми производителями, а сохраняют в версии 2.
Рассмотрим по порядку, как создать таргет из профиля с помощью xicclu.exe на примере профиля FOGRA51 или PSOcoated_v3.icc, он будет нам удобен и тем, что весит чуть более 2 мегабайт, то есть не доступен пока для препарирования в спектральном калькуляторе, и тем, что официальные профили ECI.ORG, разумеется, пишутся во второй, а не четвертой версии, и тем, что профиль содержит тег targ с колориметрической таблицей, и мы сравним с ней полученный нами результат.
Для начала извлечем из профиля содержимое тега targ нам для контроля с помощью бесплатной программы ICC Profile Inspector: Теперь возьмемся за самостоятельное создание мишени из этого профиля (или любого другого). Нам понадобятся вспомогательные файлы для оформления результатов в нужном формате, в будущем вы по образцу создадите любые такие файлы сами, а пока можно воспользоваться уже созданными мной, для профилей CMYK и RGB, скачайте их и киньте в папку с Argyll типа C:\Argyll_V2.1.2\bin Туда же в bin скопируйте и профиль PSOcoated_v3.icc - просто удобно не прописывать кучу путей в такой работе, а все файлы держать в одной папке. Далее, создаем в папке исполняемых файлов Argyll обычный текстовый файл в нотпаде, но с расширеним имени .bat, например xicclu.bat, и прописываем в него следующие строки:
xicclu -ff -ir -px PSOcoated_v3.icc <it8tab.txt> PSOcoated_v3.txt
xicclu -ff -ia -px PSOcoated_v3.icc <it8tab.txt> PSOcoated_v3abs.txt
pause:
Разница между первой и второй строкой в том, что в первой таргет извлекается с относительным рендеринг интент - ключ -ir, а во второй - с абсолютным RI - ключ -ia. Полные сведения о ключах утилиты xicclu можно посмотреть в html документе из папки doc программы. Я упоминаю виндовый нотпад для пц, потому что на маке у Argyll есть некоторые трабблы с правильной разметкой текста абзацами: на пц, маке и линуксе это разные символы, и автор Argyll забыл про это при компиляции своих программ, созданные на маке текстовые файлы для Argyll зачастую приходится пересохранять в вордпаде под виндовс, чтобы Argyll с ними работал верно.
Ключ -px говорит о том, что мы будем извлекать данные о цвете в цветовой модели CIE XYZ. Argyll много раз был пойман мной на том, что неправильно считает координаты CIE Lab, при этом верно считает XYZ, поэтому я не доверяю ему расчет лабов никогда, лабы из XYZ с верной белой точкой мы посчитаем лучше сами в спектральном калькуляторе, так надежнее.
Запускаем двойным щелком созданный нами файл xicclu.bat. Оператор pause: в нем позволяет убедиться, что никаких ошибок нет, или напротив, прочитать сообщения об ошибках и исправить командный файл. Результатом работы утилиты и нашего bat-файла становятся два текстовых файла: Как мы убедимся чуть ниже, правильным шагом для извлечения таргета из профиля будет не релативное (относительное) а абсолютное цветовое преобразование. Несмотря на то, что в профиле явно прописана таблица Relative и отстуствует таблица Absolute - абсолют вычисляется по формулам спецификации ICC (стр. 28) из релативной таблицы с учетом белой точки, явно прописанной в профиле в теге wtpt. Таргет, присутствует в профиле в абсолюте (относительная колориметрия при замерах - достаточно редкое явление, и чаще встречается лишь при неправильной калибровке спектрофотометра, нежели осмысленно), поэтому когда мы будем сравнивать наш результат с ним - нам также понадобится абсолютная таблица. И к этим формулам белая точка PCS D50 в XᵢYᵢZᵢ из той же спецификации ICC:
Xᵢ | Yᵢ | Zᵢ |
96.42 | 100 | 82.49 |
Осталось добавить просто в нотпаде заголовок CGATS в формате CMYKXYZ к нашим файлам. Для этого проще всего пройти по ссылке различный форматов файлов спектрального калькулятора https://cielab.xyz/spectralcalc/ , открыть нужный нам файл CGATS_CMYK_XYZ_Only.txt и просто скопировать из него весь заголовок до строки BEGIN_DATA включительно и последнюю строку END_DATA в наши табличные данные. Итого, у нас готовые файлы с IT8 CMYK разметкой и колориметрическим данными XYZ в размерности 0-1. Обычно в CGATS прописывают XYZ в размерности 0-100, но спектральный калькулятор понимает и размерность 0-1 от Argyll. При необходимости перемножьте в Excel столбцы XYZ на 100, но в случае со спектральным калькулятором такой необходимости нет. Тянем в спектральный калькулятор копипастом целиком содержимое файла it874ar_f51_CGATS_abs.txt, по кнопке Color получаем в поле Output ниже лабы, можно их там же кнопкой скачать текстовым файлом: Теперь мы можем сравнить в бесплатном калькуляторе цветовых различий https://cielab.xyz/colordiff.php полученные нами лабы, и лабы из тега профиля targ: Следует учесть, что порядок следования полей в таргете профиля PSOcoated_v3.icc отличается от оригинального исошного IT8.7-4, тем не менее кол-во полей 1617 одинаковое, программы путаются на подобном. Чтобы калькулятор Color Difference не сравнивал разные по описанию строки одинаковых по кол-ву строк таблиц - удалите или впишите в референс или сэмпл сравнения одну строчку так, чтобы кол-во строк сравниваемых таблиц стало разным, тогда калькулятор точно станет искать совпадения CMYK-описания строк обеих таблиц, а не просто сравнит равные по числу строк таблицы не глядя. Cпектральный калькулятор умеет давно переформатировать таблицу профиля PSOcoated_v3.icc в формате IT8 от Heidelberg в стандартном порядке следования строк IT8 для графического отображения тесткарты, но я пока не писал также и переупорядочивание всех строк таблицы на выходе, сохраняю оригинальный порядок. А пока домашнее задание: когда освоите - можете самостоятельно по приведенным примерам оформления создать вспомогательный файл для Argyll и для форматирования CGATS в порядке следования строк таргета в профиле PSOcoated_v3.icc. Кто со мной - тот герой!
Образцы вспомогательных файлов стандартного распространенного формата tc918 для профилей RGB прилагались выше.
Результатом сравнения оригинального таргета и релативной таблицы будут дельты около 5, так и должно быть - поправка на бумагу прописана в релативных таблицах профиля. Результатом сравнения оригинального targ и нами созданного по абсолюту будет крохотная дельта, показывающая, что мы все сделали правильно! Если ничего не сработало и мы имеем дело с файлом 4 версии, а препарировать его все же надо - можно воспользоваться бесплатной и очень мощной программой IccMAX. При определенном усердии и сравнивая небольшие различия профилей 2 и 4 версий мы можем в режиме xml превратить профиль 4 версии в профиль 2 версии, было бы желание. В конце концов, все что нам нужно в профиле для решения текущей задачи - это содержимое всего пары тегов - A2B1 и B2A1 - релативное преобразование красочных каналов в цвет и цвета в красочные каналы. Можно взять "шапку" с заголовками профиля 2 версии и просто поместить туда эти теги с их табличным содержимым, оформив строго как положено во второй, а не четвертой версии. Если вы уже добрались до этой темы и вам, как и мне, приходится решать подобные задачи - вы точно готовы и справитесь. Успехов!