Почему CMYK нельзя точно перевести в HEX одной формулой

CMYK без профиля не задаёт точный цвет, поэтому одного перевода в HEX нет.

Почему CMYK нельзя точно перевести в HEX одной формулой

Рабочий порядок такой: выяснить профиль, преобразовать цвет в sRGB, проверить охват и только затем записать HEX. Заодно станет понятно, почему онлайн-конвертеры дают разные ответы и что именно спросить у типографии.

В статье вы узнаете:

Чего не хватает четырём значениям CMYK

CMYK хранит управляющие значения четырёх печатных каналов: голубого, пурпурного, жёлтого и чёрного. Обычно каждый канал записывают числом от 0 до 100%. Это номинальные тоновые значения каналов, а не прямое измерение физического количества краски. Фактические растровые точки и подача зависят от RIP, машины и процесса; сами числа не сообщают, какой свет отразит готовый лист.

Возьмём CMYK 70, 20, 0, 10. На мелованной белой бумаге офсетная машина даст один голубой оттенок. На впитывающей немелованной бумаге он может стать менее насыщенным или изменить светлоту. Другой набор красок, растискивание точки, способ растрирования и лампа над оттиском снова изменят результат. Цифры остались прежними, физический цвет нет.

Поэтому фраза «цвет CMYK» неполна примерно как «температура 20» без шкалы. Для рабочего ответа нужны как минимум печатное условие или ICC-профиль. Профиль связывает значения каналов с измеренными цветовыми координатами для определённого процесса.

Это не академическая придирка. В официальном реестре ICC разные наборы характеристических данных заведены отдельно для офсетной, флексографской и других видов печати, для мелованных и немелованных материалов. Если бы одна четвёрка CMYK всегда обозначала один цвет, такой реестр был бы не нужен.

Как профиль превращает каналы в цвет

ICC-система соединяет устройства через Profile Connection Space, или PCS. Это промежуточное пространство CIELAB либо CIEXYZ, в котором цвет описывается независимо от конкретных каналов принтера или дисплея.

Путь из печатного файла в HEX выглядит так:

CMYK + профиль печати → CIELAB или CIEXYZ → sRGB → HEX

Первое преобразование отвечает на вопрос: какой измеримый цвет означают эти четыре значения в заданном печатном процессе. Второе ищет его представление в sRGB. Последний шаг уже простой: три sRGB-канала от 0 до 255 записываются парами от 00 до FF.

Архитектура ICC специально разделяет профили устройств и соединяет их через общее пространство. Это позволяет не придумывать отдельную формулу для каждой пары «эта машина, этот монитор», но исходный и целевой профили всё равно нужны [ICC, Introduction to the ICC profile format].

После профильного преобразования, когда программа уже получила sRGB, можно использовать конвертер HEX, RGB и HSL и привести запись к нужному виду. Он намеренно не принимает CMYK. Без профиля такое поле заставило бы калькулятор молча выбрать печатные условия за пользователя и выдать предположение за точный перевод.

Почему простая формула даёт только условный ответ

В интернете часто встречается формула с нормированными каналами от 0 до 1:

R = 255 × (1 − C) × (1 − K)

G = 255 × (1 − M) × (1 − K)

B = 255 × (1 − Y) × (1 − K)

Для CMYK 70%, 20%, 0%, 10% она даёт примерно RGB 69, 184, 230, то есть #45B8E6. Арифметика верная: 255 × 0,3 × 0,9 = 68,85, остальные каналы считаются так же.

Проблема не в умножении, а в модели. Формула предполагает идеальные каналы, не знает спектров красок, цвета бумаги, тоновой характеристики машины и профиля. Она полезна как быстрая демонстрация связи чисел, но #45B8E6 нельзя честно назвать точным экранным эквивалентом будущего оттиска.

Чёрный канал особенно хорошо показывает ограничение. CMYK 0, 0, 0, 100 и CMYK 100, 100, 100, 0 простая модель отправит в один RGB-чёрный. В реальной печати это разные красочные построения. У них различаются расход краски, нейтральность, глубина, поведение при совмещении и допустимая суммарная подача.

Один и тот же зрительный тёмный цвет тоже можно собрать разными сочетаниями CMY и K. Выбор называется генерацией чёрного: часть серой составляющей цветных красок заменяют чёрной. Профиль и настройки цветоделения решают, как это сделать для конкретного процесса. Обратная дорога к одному HEX стирает различие между несколькими красочными рецептами, даже если на экране они выглядят одинаково.

Где точное совпадение становится невозможным

Даже с правильными профилями перевод не всегда имеет единственный идеальный результат.

Цветовые охваты не совпадают. Охватом называют множество цветов, которые устройство способно воспроизвести. Насыщенный цвет из одного пространства может отсутствовать в другом. Тогда система должна сдвинуть его к доступной границе, а не найти несуществующий точный эквивалент.

Нельзя просто сказать, что «RGB шире CMYK» для всех случаев. Охват зависит от выбранного RGB-пространства и конкретного печатного процесса, а их области не обязаны полностью вкладываться друг в друга. Яркий экранный зелёный часто не печатается обычным CMYK, но некоторые печатные голубые или тёмные цвета тоже могут не помещаться в sRGB.

Цель преобразования можно выбрать по-разному. Относительный колориметрический режим сохраняет воспроизводимые цвета относительно белой точки, а недоступные прижимает к границе охвата. Перцепционный режим может изменить отношения между многими цветами по таблицам конкретного профиля, чтобы изображение в целом выглядело естественно. Для одиночного фирменного цвета и для фотографии это разные задачи, поэтому автоматический выбор одного режима не гарантирует лучший результат в обоих случаях.

HEX ограничен целыми sRGB-каналами. После всех преобразований результат округляется до 256 уровней каждого канала. Эта потеря обычно мала по сравнению с печатным процессом, но строгого равенства между непрерывными цветовыми координатами и шестью знаками уже нет.

Бумага не светится. Монитор создаёт свет, оттиск его отражает. Цвет отпечатка зависит от источника освещения и окружения. Физическая разница между сложением света и работой красочного слоя подробнее разобрана в статье о смешении цветов на экране и в краске. Стандарт ISO 3664 задаёт условия, при которых в графической отрасли сравнивают отпечатки и другие изображения. На кухне под тёплой лампой тот же лист может выглядеть иначе, хотя печатная машина свою работу уже закончила [ISO 3664:2025].

Кроме того, два напечатанных образца могут совпасть при одном освещении и разойтись при другом из-за разных спектров отражения. Такое явление называют метамеризмом. Обычный HEX хранит три sRGB-координаты и не способен сохранить спектральный состав отражённого света.

Как перевести CMYK в HEX

Сначала определите, что именно требуется. Для макета сайта нужен разумный sRGB-аналог. Для проверки будущей печати нужен профильный предпросмотр и цветопроба. Один HEX не решает вторую задачу.

1. Найдите исходный профиль. Проверьте профиль документа или запросите у типографии профиль и печатное условие. Название вроде «CMYK по умолчанию» не подходит: значение по умолчанию отличается между программами, странами и настройками.

2. Не путайте назначение и преобразование. Назначить профиль значит сообщить программе, как понимать существующие числа CMYK. Сами четыре канала не меняются, зато их предполагаемый цвет может измениться. Преобразовать в профиль значит пересчитать каналы, чтобы по возможности сохранить внешний вид в другом пространстве.

Если файл вообще не имеет профиля, сначала нужно выяснить, для каких условий его готовили. Перебирать профили до самого приятного синего на экране удобно, но это уже подбор нового смысла, а не восстановление исходного.

3. Выберите целью sRGB. Обычный HEX в CSS означает sRGB, поэтому для сайта и интерфейса это понятная конечная точка. Программа преобразует CMYK через PCS, применит выбранный режим отображения охвата и выдаст RGB.

4. Проверьте предупреждение об охвате. Если исходный цвет не помещается в sRGB, сравните варианты преобразования и решите, что важнее сохранить: светлоту, оттенок, насыщенность или отношения внутри изображения. Для логотипа решение принимают отдельно, а не прячут внутри случайной настройки экспорта.

5. Запишите получившийся RGB в HEX. Если профильное преобразование выдало, например, RGB 69, 184, 230, записью станет #45B8E6. На этом этапе перевод однозначен, потому что оба обозначения относятся к одному sRGB-цвету. Не приписывайте этому коду точность, которой не было на предыдущих этапах.

6. Для печати сделайте пробу. Экранная имитация помогает заметить грубые сдвиги и выход за охват, но не заменяет контрактную цветопробу или пробный оттиск на согласованном материале. Сравнивать их нужно при нормированных условиях освещения, иначе спор переместится из конвертера под ближайшую лампочку. Если экранные образцы сами расходятся, сначала проверьте цепочку по инструкции о том, почему один HEX выглядит по-разному на разных дисплеях.

Как записать фирменный цвет

В брендбуке не стоит выводить CMYK из HEX и затем объявлять обе записи взаимозаменяемыми. Лучше задать варианты по назначению:

  • для экрана: sRGB и HEX, при необходимости отдельные значения Display P3;
  • для печати: CMYK вместе с названием профиля или печатного условия;
  • для ответственной продукции: физический эталон, согласованный образец или система плашечных красок, если она подходит процессу.

Такие значения можно подобрать для близкого вида, но числа не обязаны переводиться друг в друга простой формулой. Их задача состоит в согласованном результате на разных носителях, а не в красивой арифметической симметрии внутри брендбука.

Если онлайн-сервис просит только C, M, Y и K, а затем сразу выдаёт HEX, он использует скрытое допущение или наивную модель. Для чернового макета этого иногда достаточно. Для фирменного цвета сначала нужен профиль, затем управляемое преобразование, а для печати ещё и проба. Честный ответ получается чуть длиннее шести знаков, зато тираж потом не приходится убеждать, что он просто неправильно смотрит.

Есть что добавить?

Напишите своё мнение, комментарий или предложение.