Конвертация CMYK в RGB: как работает инструмент и почему результат — лишь приближение
Инструмент на этой странице принимает четыре процента (циан, маджента, жёлтый, чёрный) и мгновенно выдаёт соответствующий RGB-цвет в виде трёх чисел от 0 до 255, а также в форматах HEX, HSL, HSV, LAB и CMYK. Всё обновляется одновременно при редактировании любого поля. Но главное — этот инструмент решает задачу, которая принципиально не может быть решена точно без дополнительных данных. Причина — в физической разнице двух цветовых моделей.
Почему CMYK и RGB — не одно и то же
CMYK — это субтрактивная четырёхканальная модель, основанная на поглощении света. Циан, маджента, жёлтый и чёрный (key) наносятся на бумагу, и каждый слой вычитает часть спектра падающего света. Чем больше краски, тем темнее цвет. RGB — аддитивная трёхканальная модель: красный, зелёный и синий светятся в темноте, смешиваясь в белый при максимальной яркости каждого канала.
Гамма CMYK (диапазон цветов, который можно воспроизвести красками) значительно уже гаммы RGB (цветов, которые способен показать монитор). Многие яркие оттенки, легко отображаемые на экране, принципиально невоспроизводимы на бумаге — и наоборот, некоторые глубокие тёмные тона, которые даёт смесь красок, могут не точно передаваться в RGB. Поэтому любое преобразование CMYK → RGB — это не однозначный перевод, а математическая аппроксимация. Инструмент использует стандартные формулы, но без ICC-профиля вы получаете лишь «начальную точку», а не точное совпадение с реальным оттиском.
Математика преобразования: от процентов к числам 0–255
Алгоритм перевода CMYK в RGB, заложенный в странице, выглядит следующим образом (все значения приводятся к диапазону 0–1):
-
Переводим проценты в доли:
C' = C/100, M' = M/100, Y' = Y/100, K' = K/100. -
Вычисляем единичные каналы RGB:
R = (1 - C') × (1 - K')
G = (1 - M') × (1 - K')
B = (1 - Y') × (1 - K') -
Умножаем на 255 и округляем до целого.
Например, для входа 66%, 69%, 0%, 10%:
- C' = 0.66, M' = 0.69, Y' = 0.0, K' = 0.1
- R = (1 - 0.66) × (1 - 0.1) = 0.34 × 0.9 = 0.306; R₂₅₅ = 78
- G = (1 - 0.69) × 0.9 = 0.31 × 0.9 = 0.279; G₂₅₅ = 71
- B = (1 - 0.0) × 0.9 = 1.0 × 0.9 = 0.9; B₂₅₅ = 229 Результат: RGB(78, 71, 229).
Формула довольно простая, но её недостаток — она не учитывает особенности конкретных красок (например, различия пигментов циана или мадженты у разных производителей). Поэтому для точного попадания в цвет используют измеренные профили (ICC) и более сложные модели, такие как GCR (замена серой компоненты) или UCR (удаление цвета под чёрным). Наш инструмент использует универсальную аппроксимацию, которая даёт разумную оценку, пригодную для предварительного просмотра и веб-верстки.
Выход за границы гаммы: что происходит с «непечатными» цветами
Любой CMYK-цвет изначально принадлежит гамме печатного устройства — все его координаты лежат внутри доступного диапазона. Но когда мы конвертируем его в RGB, результат может попасть в цвет, который монитор показать способен, — это нормальный случай. Проблема возникает, если пользователь вводит значения, которые в принципе не могут быть получены из реальной CMYK-смеси (например, сверхнасыщенные цвета), или если после обратной конвертации из RGB в CMYK цвет оказывается «за гаммой» монитора (что редко, но возможно из-за погрешностей округления).
Инструмент решает эту ситуацию так: если рассчитанное значение любого канала RGB выходит за пределы 0…255, оно обрезается до ближайшего допустимого числа (0 или 255). Например, комбинация, дающая теоретический R = 270, будет уменьшена до 255. Это приводит к потере информации: если такой цвет затем конвертировать обратно в CMYK, вы получите другое значение — произойдёт «сдвиг». Инструмент честно предупреждает об этом в описании страницы. На практике такие случаи встречаются редко, но при точной цветопередаче (например, для логотипа, который должен совпадать в печати и на экране) лучше сверять результаты через ICC-профиль целевого принтера.
Практические ограничения: почему экран никогда не заменит оттиск
Даже если инструмент выводит идеально точные по формулам числа, реальный цвет на мониторе зависит от его калибровки, цветовой температуры, технологии матрицы (IPS, OLED и т.д.). Напечатанный цвет — от бумаги, покрытия, краски, температуры печати. Поэтому:
- Инструмент показывает лишь «он-скринную оценку» CMYK. Профессиональные типографии работают с дюзовыми пробами и спектрофотометрами, а не с экранными значениями.
- CMYK-выход на странице (который дублирует ввод) отображается только для удобства — он не учитывает профиль печатной машины. Если вы перенесёте числа в Photoshop с другим цветовым профилем, результат будет другим.
- Разница между матовой и глянцевой бумагой может изменить восприятие цвета сильнее, чем погрешность конвертации. Для одного и того же CMYK-набора отпечаток на мелованной бумаге будет ярче, на офсетной — тусклее.
Тем не менее, инструмент полезен для быстрой проверки: «а как этот фирменный голубой будет выглядеть на экране?» или «какие числа RGB мне прописать в CSS, чтобы цвет сайта напоминал цвет брошюры?» Главное — помнить, что точного совпадения не будет, и при необходимости уточнять у типографии допустимые отклонения.
Кому пригодится этот инструмент
Графические дизайнеры, работающие в InDesign или Illustrator, часто получают макеты в CMYK, но должны показывать заказчику рендеры для экрана. Наш инструмент за секунду переводит значения, избавляя от ручных расчётов.
Веб-разработчикам нередко приходят брендбуки с напечатанными образцами и числовыми CMYK-кодами. Чтобы вписать эти цвета в CSS, нужно преобразовать их в HEX или RGB. Вместо того чтобы гадать по «пипетке» со скана, можно сразу ввести проценты и получить точный RGB-эквивалент.
Верстальщики и продакт-менеджеры, которые занимаются согласованием полиграфии и цифровых макетов, могут быстро обнаружить, что «тот самый насыщенный зелёный» в печати превращается в тусклый серо-зелёный — и своевременно скорректировать дизайн.
Интерфейс и обработка ошибок
Все поля — CMYK, RGB, HEX, HSL, HSV, LAB — обновляются синхронно при вводе в любое из них. Если вы предпочитаете задать цвет в HEX, а потом увидеть его CMYK-эквивалент — это тоже работает. Единственное ограничение: для CMYK-поля требуется строгий формат — четыре числа от 0 до 100, разделённые запятыми, с символом процента после каждого. Например: 12%, 34%, 56%, 78%. При вводе 12 34 56 78 или 12,34,56,78 (без процентов) вы получите сообщение: «Enter CMYK as four percentages 0–100, like 66%, 69%, 0%, 10%.» (отображается на английском, как указано в источнике). Для всех остальных полей сообщений об ошибках не предусмотрено — ввод, не поддающийся парсингу, просто игнорируется до исправления.
Все вычисления выполняются локально в браузере. Никакие данные не отправляются на сервер. Это делает инструмент быстрым и безопасным.
Часто задаваемые вопросы
Почему цвет на экране и на распечатке с одними и теми же числами отличается?
Потому что экран работает в аддитивной модели (RGB), а печать — в субтрактивной (CMYK). Даже теоретически точный перевод не может компенсировать разницу в физике воспроизведения. Кроме того, на результат влияют профили принтера, калибровка монитора и свойства бумаги.
Можно ли использовать результат конвертации для точной цветопередачи?
Только как начальную точку. Для ответственной печати необходимо задействовать ICC-профиль конкретного устройства и, желательно, сделать цветопробу. Без этого разница может быть заметна невооружённым глазом.
Что такое «выход за гамму» и когда это происходит?
Гамма — это полный набор цветов, который может воспроизвести устройство. Если после преобразования один из RGB-каналов оказывается меньше 0 или больше 255, инструмент обрезает его до границы. Такое случается при вводе очень тёмных или очень насыщенных CMYK-комбинаций. При обратной конвертации значения могут сместиться.
Почему CMYK-вывод на странице совпадает с тем, что я ввёл?
Да, поле CMYK просто отображает введённые вами проценты для удобства сравнения. Реальное преобразование происходит в RGB, а затем все остальные форматы (HEX, HSL и т.д.) рассчитываются уже от RGB.
Может ли инструмент работать наоборот — из RGB в CMYK?
Да, страница поддерживает двустороннюю конвертацию. Вы можете ввести цвет в любом из поддерживаемых форматов, и все остальные поля обновятся, включая CMYK. При этом алгоритм остаётся тем же: сначала он приводит ввод к RGB (если это не RGB), а потом конвертирует в CMYK по стандартной формуле. Для точного обратного перевода действуют те же ограничения.
Какие форматы цветов поддерживает инструмент?
Шесть: HEX (например, #4E47E5), RGB (три числа 0–255), HSL (тон от 0 до 360, насыщенность и светлота в процентах), HSV (тон и два процента), CMYK (четыре процента) и LAB (светлота L от 0 до 100, a и b — от –128 до 127). Все поля редактируемы.