Конвертер 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%. Параметр альфа имеет такой же диапазон 01, как и в 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
ОписаниеHSVAHSLA
Белый 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 для инструментов, которым нужны ползунки, в то время как другие делают наоборот. Важно выбрать один основной формат и автоматизировать преобразование в другой.

Связанные конвертеры: