Конвертер HSVA в HSLA
Преобразуйте hsva(h, s, v, a) значения в hsla(h, s, l, a), не проходя через все промежуточные формулы. Эта страница полезна, когда инструменты и выборщики работают в HSVA, в то время как ваши палитры или токены описаны в HSLA.
Введите цвет в формате HSVA, и вы сразу увидите соответствующее представление HSLA. Вы можете повторно использовать нотацию hsla() в темах, документации или дизайнерских заметках.
Ниже вы найдете краткий обзор HSVA и HSLA, формулу преобразования, пример, пошаговое объяснение, небольшую справочную таблицу и часто задаваемые вопросы о сочетании этих двух цветовых моделей.
Что такое HSVA
HSVA — это модель HSV, расширенная альфа-каналом. Концептуально ее можно записать как hsva(h, s, v, a), где оттенок выбирает базовый цвет, насыщенность контролирует интенсивность, значение определяет яркость, а альфа контролирует прозрачность.
Оттенок измеряется в градусах от 0 до 360. Насыщенность и значение указываются в процентах от 0% до 100%. Альфа — это число от 0 (полностью прозрачный) до 1 (полностью непрозрачный).
HSVA часто используется в выборщиках цветов и инструментах рисования, где люди перемещают ползунки для оттенка, насыщенности, значения и прозрачности, вместо того чтобы думать о сырых каналах RGB.
Что такое HSLA
HSLA — это модель HSL с альфа-компонентом. Она записывается как hsla(h, s, l, a), где h — это оттенок, s — насыщенность, l — светлота, а a — непрозрачность.
Оттенок снова варьируется от 0 до 360 градусов. Насыщенность и светлота используют диапазон 0%–100%. Параметр альфа имеет такой же диапазон 0–1, как и в HSVA.
HSLA удобно использовать для описания палитр и тем, потому что вы можете рассуждать о том же оттенке с точки зрения его насыщенности и светлоты или темноты, в то время как прозрачность контролируется отдельно.
Формула преобразования HSVA в HSLA
hsva(h, s_v, v, a) -> hsla(h, s_l, l, a)
Given:
h in [0, 360)
s_v in [0, 100] // HSV saturation
v in [0, 100] // value
a in [0, 1]
1) Clamp inputs:
h_c = h
s_v_c = clamp(s_v, 0, 100)
v_c = clamp(v, 0, 100)
a_c = clamp(a, 0, 1)
2) Convert HSVA to RGB (intermediate step):
s_v' = s_v_c / 100
v' = v_c / 100
c = v' * s_v'
x = c * (1 - |((h_c / 60) mod 2) - 1|)
if 0 <= h_c < 60 then (r1, g1, b1) = (c, x, 0)
else if 60 <= h_c < 120 then (r1, g1, b1) = (x, c, 0)
else if 120 <= h_c < 180 then (r1, g1, b1) = (0, c, x)
else if 180 <= h_c < 240 then (r1, g1, b1) = (0, x, c)
else if 240 <= h_c < 300 then (r1, g1, b1) = (x, 0, c)
else (r1, g1, b1) = (c, 0, x)
m = v' - c
r' = r1 + m
g' = g1 + m
b' = b1 + m
3) Convert RGB to HSL:
max = max(r', g', b')
min = min(r', g', b')
delta = max - min
// Lightness:
l' = (max + min) / 2
// Saturation in HSL space:
if delta == 0 then s_l' = 0
else s_l' = delta / (1 - |2 * l' - 1|)
// Hue (optionally recomputed for stability):
if delta == 0 then h_hsl = 0
else if max == r' then h_hsl = 60 * (((g' - b') / delta) mod 6)
else if max == g' then h_hsl = 60 * (((b' - r') / delta) + 2)
else if max == b' then h_hsl = 60 * (((r' - g') / delta) + 4)
4) Scale to final units:
H = h_hsl // often equal to h_c
S_l = s_l' * 100
L = l' * 100
5) Compose HSLA:
hsla(H, S_l%, L%, a_c)
Helper:
clamp(x, min, max) = min if x < min, max if x > max, else xДругими словами, конвертер сначала интерпретирует HSVA как цвет RGB с альфа-каналом, а затем переписывает ту же точку в цветовом пространстве, используя координаты HSL, в то время как значение альфа копируется напрямую.
Пример для hsva(196, 59%, 76%, 0.8)
1) Преобразование HSV в RGB:
hsv(196, 59%, 76%) -> rgb(79, 163, 194) (округлено)
2) Преобразование RGB(79, 163, 194) в HSL:
hsl(196, 49%, 54%) (округлено)
3) Сохранить альфа:
hsla(196, 49%, 54%, 0.8)Как работает преобразование HSVA в HSLA шаг за шагом
Логика преобразования HSVA в HSLA заключается в изменении описания яркости и интенсивности при сохранении основного цвета RGB и прозрачности.
hsva(210, 57%, 24%, 0.5)
-> hsv(210, 57%, 24%)
-> rgb(r, g, b)
-> hsl(h, s, l)
-> hsla(h, s, l, 0.5)Вот компактный эскиз для hsva(210, 57%, 24%, 0.5).
- Шаг 1 - Перейти от HSVA к RGB
Нормализуйте насыщенность и значение, вычислите хроматичность, выберите сектор оттенка и добавьте смещение, чтобы самый яркий канал соответствовал запрашиваемому значению.
s_v' = 57 / 100 v' = 24 / 100 c = v' * s_v' ... -> rgb(26, 43, 60) (rounded) - Шаг 2 - Вычислить HSL из RGB
Используйте максимальные и минимальные каналы RGB для вычисления светлоты и насыщенности в стиле HSL, при необходимости пересчитывая оттенок из тройки RGB.
max = max(r', g', b') min = min(r', g', b') delta = max - min l' = (max + min) / 2 if delta == 0 then s_l = 0 else s_l = delta / (1 - |2 * l' - 1|) - Шаг 3 - Присоедините оригинальную альфу
Объедините новые значения HSL с той же долей альфа и запишите результат как HSLA.
hsla(210, 39%, 17%, 0.5)
Этот подход работает для любого допустимого входного значения HSVA, поэтому небольшая вспомогательная или конвертерная функция обычно является самым практичным способом поддерживать токены на основе HSLA в синхронизации с инструментами на основе HSVA.
Выбор между HSVA и HSLA
HSVA и HSLA описывают один и тот же набор цветов, но используют разные координаты. Один сосредоточен на значении, другой — на светлоте, и оба имеют общий оттенок и альфу.
Когда HSVA работает хорошо
- Интерактивные элементы управления: ползунки для оттенка, насыщенности, значения и непрозрачности интуитивно понятны для исследования вариаций базового цвета.
- Инструменты, сосредоточенные на яркости относительно черного: значение часто легче воспринимается в контексте рендеринга и освещения.
- Существующие API на основе HSV: многие библиотеки и редакторы используют HSV в качестве основной модели управления.
Когда HSLA более удобна
- Дизайн палитры и темы: мышление на основе светлоты упрощает создание оттенков и тонов из одного оттенка.
- Дизайнерская документация: значения HSLA четко показывают, как насыщенность и светлота различаются между связанными ролями и состояниями.
- Согласование светлых и темных вариантов: сохранение стабильного оттенка и изменение светлоты — это распространенный шаблон для многотемных систем.
Резюме
Используйте HSVA, когда ползунки и немедленные предварительные просмотры имеют наибольшее значение, и преобразуйте в HSLA, когда вы записываете цвета в спецификациях, палитрах и письменных рекомендациях.
Лучшие практики для совместного использования HSVA и HSLA
Обе модели могут сосуществовать в одном проекте, если вы четко определите, какую из них вы используете для редактирования, а какую — для документации или токенов.
Определите четкие роли
- HSVA в инструментах редактирования: представьте элементы управления в стиле HSV с ползунком альфа в внутренних выборщиках и инспекторах.
- HSLA в спецификациях и токенах: храните канонические значения палитры в виде строк HSLA, которые легко просматривать и сравнивать.
Сочетайте с другими цветовыми форматами
- Преобразуйте через RGB при необходимости: стандартные вспомогательные функции упрощают переход между форматами HSVA, HSLA, RGBA и HEX.
- Ограничьте сгенерированные значения: сохраняйте оттенок, насыщенность, значение, светлоту и альфу в пределах их допустимых диапазонов при генерации или анимации цветов.
Сохраняйте систему понятной
- Документируйте, где появляется каждая модель: объясните, где ожидается HSVA (инструменты) и где используется HSLA (палитры и токены).
- Полагайтесь на конвертеры, а не на ручные изменения: небольшие скрипты или утилиты уменьшают количество ошибок и поддерживают синхронизацию всех представлений со временем.
С этими соглашениями HSVA и HSLA дополняют друг друга, а не конкурируют, и ваша цветовая система остается более простой в обслуживании.
Таблица преобразования HSVA в HSLA
В таблице ниже перечислены несколько распространенных цветов HSVA с прозрачностью и их эквиваленты HSLA. Значения округлены для удобства чтения; для точных чисел используйте конвертер в верхней части страницы.
| Описание | HSVA | HSLA |
|---|---|---|
| Белый 50% | hsva(0, 0%, 100%, 0.5) | hsla(0, 0%, 100%, 0.5) |
| Черный 50% | hsva(0, 0%, 0%, 0.5) | hsla(0, 0%, 0%, 0.5) |
| Красный 80% | hsva(0, 100%, 100%, 0.8) | hsla(0, 100%, 50%, 0.8) |
| Зеленый 40% | hsva(120, 100%, 100%, 0.4) | hsla(120, 100%, 50%, 0.4) |
| Синий 30% | hsva(240, 100%, 100%, 0.3) | hsla(240, 100%, 50%, 0.3) |
| Желтый 60% | hsva(60, 100%, 100%, 0.6) | hsla(60, 100%, 50%, 0.6) |
| Циан 70% | hsva(180, 100%, 100%, 0.7) | hsla(180, 100%, 50%, 0.7) |
| Магента 90% | hsva(300, 100%, 100%, 0.9) | hsla(300, 100%, 50%, 0.9) |
| Наложение серого | hsva(0, 0%, 7%, 0.5) | hsla(0, 0%, 7%, 0.5) |
| Мягкий серый | hsva(0, 0%, 20%, 0.5) | hsla(0, 0%, 20%, 0.5) |
| Граница панели | hsva(0, 0%, 33%, 0.5) | hsla(0, 0%, 33%, 0.5) |
| Акцентный оранжевый 70% | hsva(39, 100%, 100%, 0.7) | hsla(39, 100%, 50%, 0.7) |
| Фиолетовое наложение | hsva(300, 100%, 50%, 0.5) | hsla(300, 100%, 25%, 0.5) |
| Наложение бирюзового | hsva(180, 100%, 50%, 0.5) | hsla(180, 100%, 25%, 0.5) |
Для любого другого значения HSVA вы можете использовать конвертер выше, чтобы вычислить соответствующий цвет HSLA, используя тот же алгоритм.
Часто задаваемые вопросы: HSVA в HSLA
- Почему преобразовывать HSVA в HSLA
HSVA удобна для инструментов на основе ползунков, в то время как HSLA часто более читаема в дизайнерских спецификациях и определениях палитры. Преобразование позволяет использовать ту модель, которая более естественна в каждом конкретном случае.
- Определяют ли HSVA и HSLA разные цвета
Нет. Обе модели описывают одно и то же цветовое пространство на основе RGB. Они различаются только тем, как выражаются яркость и интенсивность.
- Изменяется ли значение альфа во время преобразования
В типичных рабочих процессах альфа-компонент копируется напрямую, потому что как HSVA, так и HSLA рассматривают прозрачность как долю от
0до1. - Могу ли я преобразовать HSLA обратно в HSVA
Да. Вы можете преобразовать HSLA в RGB, затем преобразовать RGB в HSV и повторно использовать значение альфа, чтобы снова получить HSVA.
- Должен ли я хранить токены как HSVA или HSLA
Это зависит от вашего рабочего процесса. Многие команды хранят значения HSLA как удобный источник правды и генерируют HSVA для инструментов, которым нужны ползунки, в то время как другие делают наоборот. Важно выбрать один основной формат и автоматизировать преобразование в другой.
Связанные конвертеры:
Конвертер HEXA в HSLA
Мгновенный расчет hexa в hslaКонвертер HEXA в HSVA
Мгновенный расчет hexa в hsvaКонвертер RGBA в HSLA
Мгновенный расчет rgba в hslaКонвертер RGBA в HSVA
Мгновенный расчет rgba в hsvaКонвертер HSLA в HSVA
Мгновенный расчет hsla в hsvaКонвертер HSVA в HEXA
Мгновенный расчет hsva в hexa