Подключиться через MCP →

Введите расчет

Математическая формула

Реклама

Результатов

Цвет в HSL
hsl(9,13, 100%, 63,92%)
Тон, насыщенность, светлота
Тон (H) 9,13°
Насыщенность (S) 100%
Светлота (L) 63,92%

Что такое конвертер RGB в HSL?

Этот инструмент переводит цвет из модели RGB (Red, Green, Blue — красный, зелёный, синий; каждый канал от 0 до 255) в модель HSL (Hue, Saturation, Lightness — тон, насыщенность, светлота). Дизайнерам HSL зачастую удобнее: она отделяет сам оттенок (тон) от того, насколько он сочный (насыщенность) и насколько светлый или тёмный (светлота). Перевод универсален и не зависит ни от устройства, ни от страны.

Схема преобразования пересекающихся кругов RGB в цветовой цилиндр HSL
Значения RGB преобразуются в модель HSL: тон, насыщенность и светлота.

Как пользоваться

Введите значения красного, зелёного и синего каналов вашего цвета — каждое в диапазоне от 0 до 255. Нажмите «Рассчитать», и вы получите эквивалент в HSL, готовый для вставки в CSS в формате hsl(H, S%, L%).

Разбор формулы

Сначала нормализуем каждый канал, разделив его на 255, чтобы значение попало в диапазон 0–1. Обозначим max и min как наибольшее и наименьшее из этих трёх чисел, а \(\Delta = \max - \min\). Светлота равна \(L = (\max + \min) / 2\). Насыщенность вычисляется как \(S = \Delta / (1 - \lvert 2L - 1 \rvert)\), либо равна 0, если \(\Delta = 0\) (то есть цвет серый). Тон определяется по тому каналу, который оказался наибольшим, умножается на 60° и приводится к диапазону 0–360°.

$$L = \frac{C_{\max} + C_{\min}}{2}, \quad S = \frac{C_{\max} - C_{\min}}{1 - \lvert 2L - 1 \rvert}$$$$\text{where}\quad \left\{ \begin{aligned} R^{\prime} &= \frac{\text{Red}}{255}, \;\; G^{\prime} = \frac{\text{Green}}{255}, \;\; B^{\prime} = \frac{\text{Blue}}{255} \\ C_{\max} &= \max(R^{\prime}, G^{\prime}, B^{\prime}), \;\; C_{\min} = \min(R^{\prime}, G^{\prime}, B^{\prime}) \end{aligned} \right.$$$$H = 60^{\circ} \times \begin{cases} \dfrac{G^{\prime} - B^{\prime}}{\Delta} \bmod 6 & C_{\max} = R^{\prime} \\[0.6em] \dfrac{B^{\prime} - R^{\prime}}{\Delta} + 2 & C_{\max} = G^{\prime} \\[0.6em] \dfrac{R^{\prime} - G^{\prime}}{\Delta} + 4 & C_{\max} = B^{\prime} \end{cases}$$
Цилиндр HSL с углом тона, радиусом насыщенности и высотой светлоты
Тон — это угол, насыщенность — расстояние от оси, а светлота — положение по вертикали.

Пример расчёта

Возьмём томатно-красный RGB(255, 99, 71). После нормализации: \(R=1\), \(G=0{,}388\), \(B=0{,}278\). \(\max=1\), \(\min=0{,}278\), \(\Delta=0{,}722\).

$$L = \frac{1 + 0{,}278}{2} = 0{,}639 \to 63{,}9\%$$$$S = \frac{0{,}722}{1 - \lvert 2 \cdot 0{,}639 - 1 \rvert} = \frac{0{,}722}{0{,}722} = 1 \to 100\%$$

Поскольку наибольшим оказался канал R,

$$H = 60 \times \left( \frac{0{,}388 - 0{,}278}{0{,}722} \right) = 60 \times 0{,}1525 \approx 9{,}13^{\circ}$$

Результат: hsl(9.13, 100%, 63.92%).

Частые вопросы

Почему у серых цветов насыщенность равна 0? Когда все три канала равны, \(\Delta = 0\), а значит цветовой информации нет и насыщенность не определена — по соглашению её принимают за 0.

Округляются ли значения H, S, L? На экране они показываются с двумя знаками после запятой, но в расчётах используется полная точность.

Можно ли выполнить обратный перевод? Да — перевод HSL в RGB является обратной операцией и использует сектор тона и насыщенность (chroma).

Последнее обновление: