Что скрывается за шестью цифрами

В записи `#RRGGBB` каждая пара отвечает за один канал света: красный, зелёный или синий. Это шестнадцатеричные числа — система счисления с цифрами от 0 до 9 и буквами от A до F. Каждую пару можно представить как число от 0 до 255: чем оно больше, тем сильнее соответствующий канал в цифровом рецепте. Например, `#FF0000` задаёт максимум красного и нули для двух остальных каналов.

От рецепта к свету

Код не содержит готового физического оттенка. Он сообщает программе, какие значения передать дисплею, а тот превращает их в свет с помощью красных, зелёных и синих элементов пикселя. Смешивая их в разных пропорциях, экран создаёт множество цветов; при отсутствии света получается чёрный, а при максимуме всех трёх каналов — белый.

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

Почему важен цветовой профиль

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

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