Конвертер HSV в HSL
Преобразуйте HSV цветовые значения в HSL без ручных расчетов. Этот конвертер полезен, когда вы получаете цвета от пипетки или API в формате HSV, но хотите рассуждать о них или хранить их в формате HSL в вашей системе дизайна.
Введите цвет в формате HSV, и соответствующая тройка HSL появится мгновенно. Вы можете интерактивно регулировать оттенок, насыщенность и значение, а затем скопировать полученное значение HSL в CSS, токены или документацию.
На этой странице вы также найдете краткий обзор HSV и HSL, четкое описание алгоритма преобразования, пошаговую инструкцию, справочную таблицу и ответы на часто задаваемые вопросы о совместном использовании обеих моделей.
Что такое HSV
HSV означает Оттенок, Насыщенность и Значение. Он описывает цвета, используя угол оттенка на цветовом круге, насколько интенсивен этот оттенок и насколько ярким кажется результат по сравнению с черным.
Оттенок варьируется от 0 до 360 градусов. Насыщенность и значение — это проценты от 0% до 100%. Низкое значение насыщенности создает более приглушенные и сероватые тона, в то время как низкое значение делает цвет темнее и ближе к черному.
Из-за этой структуры HSV распространен в программном обеспечении для рисования и цветовых пипетках. Он позволяет пользователям думать в терминах "насколько сильный" и "насколько яркий" цвет, не касаясь отдельных каналов RGB.
Что такое HSL
HSL означает Оттенок, Насыщенность и Светлота. Он использует ту же идею угла оттенка, но заменяет значение на светлоту, которая измеряет, насколько цвет близок к черному или белому.
Оттенок в HSL также записывается в градусах от 0 до 360. Насыщенность и светлота — это проценты от 0% до 100%. При 0% светлоты цвет черный, при 100% — белый, а при 50% он имеет средний уровень яркости.
Это делает HSL удобным форматом для создания тем и палитр. Дизайнеры могут фиксировать оттенок для цвета бренда и изменять светлоту и насыщенность, чтобы создать согласованные состояния и уровни глубины.
Формула преобразования HSV в HSL
hsv(h, s_v, v) -> hsl(h, s_l, l)
Дано:
h в [0, 360)
s_v в [0, 100] // HSV насыщенность
v в [0, 100] // значение
1) Нормализуйте значения HSV:
s_v' = s_v / 100
v' = v / 100
2) Преобразуйте HSV в RGB (промежуточный шаг):
a) Вычислите хрома:
c = v' * s_v'
b) Вспомогательное значение:
x = c * (1 - |((h / 60) mod 2) - 1|)
c) Временная тройка на основе сектора оттенка:
если 0 <= h < 60 то (r1, g1, b1) = (c, x, 0)
иначе если 60 <= h < 120 то (r1, g1, b1) = (x, c, 0)
иначе если 120 <= h < 180 то (r1, g1, b1) = (0, c, x)
иначе если 180 <= h < 240 то (r1, g1, b1) = (0, x, c)
иначе если 240 <= h < 300 то (r1, g1, b1) = (x, 0, c)
иначе (r1, g1, b1) = (c, 0, x)
d) Добавьте смещение:
m = v' - c
r' = r1 + m
g' = g1 + m
b' = b1 + m
3) Преобразуйте RGB в HSL:
a) Найдите max и min:
max = max(r', g', b')
min = min(r', g', b')
delta = max - min
b) Яркость:
l = (max + min) / 2
c) HSL насыщенность:
если delta == 0 то s_l' = 0
иначе s_l' = delta / (1 - |2 * l - 1|)
4) Преобразуйте в итоговые единицы:
H = h
S_l = s_l' * 100
L = l * 100В этом алгоритме угол оттенка сохраняется. Конвертер временно выражает цвет HSV как RGB, а затем вычисляет светлоту и новую насыщенность из этих значений RGB, чтобы получить тройку HSL.
Пример для hsv(196, 59%, 76%)
1) Нормализуйте s_v и v к диапазону [0, 1]
2) Вычислите c, x, m и получите r', g', b'
3) Найдите max, min и delta для RGB
4) Вычислите l и s_l, используя правила HSL
5) Округлённый результат (одно из возможных приближений):
hsl(196, 49%, 54%)Как работает преобразование HSV в HSL шаг за шагом
Концептуально преобразование из HSV в HSL заключается в описании той же точки в цветовом пространстве с помощью другого набора осей. Оттенок остается прежним, в то время как насыщенность и третье значение переосмысляются в терминах светлоты вместо значения.
hsv(210, 57%, 24%)
-> rgb(r, g, b)
-> hsl(h, s, l)Вот упрощенная инструкция для hsv(210, 57%, 24%).
- Шаг 1 - Интерпретировать HSV как RGB
Нормализуйте насыщенность и значение, вычислите хрома и вспомогательное значение, выберите временную тройку на основе сектора оттенка и добавьте смещение. Это дает три нормализованных канала RGB.
s_v' = 0.57 v' = 0.24 rgb(26, 43, 60) после округления - Шаг 2 - Получите параметры HSL из RGB
Используйте максимальные и минимальные значения каналов для вычисления светлоты и измерения, насколько цвет далек от серого. Это распределение становится новой насыщенностью в пространстве HSL.
max = max(r', g', b') min = min(r', g', b') l = (max + min) / 2 if delta == 0 then s_l = 0 else s_l = delta / (1 - |2 * l - 1|) - Шаг 3 - Выразите результат как hsl(h, s, l)
Сохраните оригинальный угол оттенка, но замените насыщенность и значение HSV на новую насыщенность и светлоту. Цвет на экране остается прежним; меняется только нотация.
hsl(210, 39%, 17%)
Та же логика работает для любого допустимого значения HSV, поэтому конвертер или утилита обычно являются лучшим выбором по сравнению с ручными расчетами.
Когда использовать HSV и когда использовать HSL
HSV и HSL имеют одинаковое измерение оттенка, но отличаются тем, как они представляют яркость и интенсивность. Каждая модель может быть более удобной в разных частях рабочего процесса.
Где HSV полезен
- Цветовые пипетки и инструменты для рисования: ползунки значения и насыщенности интуитивны, когда люди визуально настраивают цвета.
- Работа с интерфейсами, сосредоточенными на яркости: некоторые интерфейсы думают в терминах "насколько яркий" цвет, а не насколько он близок к черному и белому.
- Быстрое исследование: изменение значения часто дает быстрый отклик при поиске более светлых или темных вариантов оттенка.
Где HSL подходит лучше
- Создание структурированных палитр: светлота предоставляет предсказуемый способ создания оттенков и тонов.
- Написание спецификаций дизайна: значения HSL, такие как
hsl(210, 40%, 20%), легко читаются в документации и коде. - Координация светлых и темных тем: регулировка диапазонов светлоты при сохранении стабильного оттенка помогает поддерживать согласованное восприятие.
Резюме
Используйте HSV для интерактивных настроек и инструментов, которые сосредоточены на значении. Предпочитайте HSL для дизайн-токенов, палитр и документации, где управление на основе светлоты более интуитивно.
Практические советы по совместному использованию HSV и HSL
Обычно в одном проекте используются как HSV, так и HSL. Небольшое количество планирования может сделать так, чтобы эти модели работали вместе, а не конкурировали.
Отдельное редактирование и хранение
- Экспериментируйте в HSV: настраивайте оттенок, насыщенность и значение, пока цвет не будет выглядеть правильно в пипетке.
- Храните токены в HSL: сохраняйте окончательные значения в HSL, где их легче читать, настраивать и документировать.
Комбинируйте с другими форматами
- Преобразуйте через RGB при необходимости: многие библиотеки уже реализуют преобразование HSV в RGB и RGB в HSL, поэтому вы можете комбинировать их вместо написания собственных расчетов.
- Используйте HSLA или RGBA для прозрачности: храните базовые цвета в HSL или RGB и добавляйте альфа-канал только там, где вам действительно нужны полупрозрачные наложения.
Сохраняйте форматы последовательными
- Определите четкие правила для каждого слоя: например, HSV в пипетках, HSL в токенах, RGB или HEX в финальном CSS.
- Избегайте случайного смешивания моделей: последовательное использование форматов упрощает будущие рефакторинги и изменения тем.
С четким разделением того, где используются HSV и HSL, вы можете воспользоваться преимуществами обеих моделей, не добавляя путаницы в вашу кодовую базу.
Таблица преобразования HSV в HSL
Таблица ниже показывает несколько знакомых цветов, описанных как в HSV, так и в HSL. Значения округлены, чтобы их было легче просматривать, поэтому полагайтесь на конвертер выше, когда вам нужны точные числа.
| Описание | HSV | HSL |
|---|---|---|
| Белый | hsv(0, 0%, 100%) | hsl(0, 0%, 100%) |
| Черный | hsv(0, 0%, 0%) | hsl(0, 0%, 0%) |
| Красный | hsv(0, 100%, 100%) | hsl(0, 100%, 50%) |
| Зеленый | hsv(120, 100%, 100%) | hsl(120, 100%, 50%) |
| Синий | hsv(240, 100%, 100%) | hsl(240, 100%, 50%) |
| Желтый | hsv(60, 100%, 100%) | hsl(60, 100%, 50%) |
| Циан | hsv(180, 100%, 100%) | hsl(180, 100%, 50%) |
| Пурпурный | hsv(300, 100%, 100%) | hsl(300, 100%, 50%) |
| Серый 1 | hsv(0, 0%, 7%) | hsl(0, 0%, 7%) |
| Серый 2 | hsv(0, 0%, 20%) | hsl(0, 0%, 20%) |
| Серый 3 | hsv(0, 0%, 33%) | hsl(0, 0%, 33%) |
| Серый 4 | hsv(0, 0%, 47%) | hsl(0, 0%, 47%) |
| Серый 5 | hsv(0, 0%, 60%) | hsl(0, 0%, 60%) |
| Серый 6 | hsv(0, 0%, 80%) | hsl(0, 0%, 80%) |
| Оранжевый | hsv(39, 100%, 100%) | hsl(39, 100%, 50%) |
| Фиолетовый | hsv(300, 100%, 50%) | hsl(300, 100%, 25%) |
| Бирюзовый | hsv(180, 100%, 50%) | hsl(180, 100%, 25%) |
Для любого другого цвета HSV вы можете использовать конвертер в верхней части страницы, чтобы получить соответствующее значение HSL, используя стандартный алгоритм.
Часто задаваемые вопросы: HSV в HSL
- Почему я должен преобразовывать HSV в HSL
Многие инструменты предоставляют управление HSV, в то время как ваши токены и документация могут использовать HSL. Преобразование позволяет вам проектировать с одной моделью и хранить или делиться цветами с другой, не меняя их внешний вид.
- Определяют ли HSV и HSL разные цвета
Нет. Это просто разные координатные системы для одного и того же цветового пространства на основе RGB. Любой допустимый цвет HSV имеет соответствующее представление HSL и наоборот.
- Остается ли оттенок прежним при преобразовании
В стандартных алгоритмах угол оттенка сохраняется. Меняются только насыщенность и третье значение, которые пересчитываются в соответствии с правилами каждой модели.
- Могу ли я вернуться из HSL в HSV, не теряя данные
Да. Переход между HSV и HSL через RGB обратим до округления. Пока значения правильно ограничены, визуальный цвет остается прежним.
- Является ли одна модель лучше другой во всех случаях
Не совсем. HSV часто более удобен в пипетках и инструментах для рисования, в то время как HSL, как правило, яснее для дизайн-токенов, палитр и письменных спецификаций. Нормально использовать обе модели в одном проекте с четкими правилами преобразования.