Конвертер HSLA в HSVA

Преобразуйте hsla(h, s, l, a) значения в hsva(h, s, v, a) без необходимости вручную проходить через каждую формулу. Этот инструмент полезен, когда ваша система дизайна хранит цвета в формате HSLA, но вы работаете с пиками или API, которые работают в пространстве HSV с отдельным альфа-каналом.

Введите цвет в формате HSLA, и вы сразу увидите эквивалентные значения HSVA. Затем вы можете вставить hsva() стиль представления в внутренние утилиты, графические инструменты или документацию.

На этой странице вы также найдете краткое объяснение HSLA и HSVA, формулу преобразования, пример, справочную таблицу и раздел часто задаваемых вопросов, который охватывает типичные вопросы о переходе между этими двумя моделями.

Что такое HSLA

HSLA — это цветовая модель HSL с альфа-каналом. Она использует оттенок, насыщенность и светлоту для описания цвета и четвертый параметр для описания его прозрачности.

Оттенок — это угол от 0 до 360 градусов на цветовом круге. Насыщенность и светлота — это проценты от 0% до 100%. Альфа — это дробь от 0 до 1, где 0 — полностью прозрачный, а 1 — полностью непрозрачный.

HSLA распространен в темах и дизайне палитр, потому что позволяет вам регулировать интенсивность и яркость цвета, не изменяя его основной оттенок и при этом сохраняя прозрачность отдельно.

Что такое HSVA

HSVA расширяет модель HSV альфа-каналом. Его можно концептуально записать как hsva(h, s, v, a), где оттенок выбирает базовый цвет, насыщенность контролирует его интенсивность, значение контролирует, насколько он яркий относительно черного, а альфа контролирует прозрачность.

Оттенок снова варьируется от 0 до 360 градусов. Насыщенность и значение — это проценты от 0% до 100%. Альфа-компонент использует тот же диапазон 0 до 1, что и HSLA.

HSVA широко используется в цветовых пиках и инструментах рисования, где пользователи перемещают ползунки для оттенка, насыщенности, значения и непрозрачности, чтобы исследовать и точно настраивать цвета.

Формула преобразования HSLA в HSVA

hsla(h, s_l, l, a) -> hsva(h, s_v, v, a)

Given:
  h   in [0, 360)
  s_l in [0, 100]  // HSL saturation
  l   in [0, 100]  // lightness
  a   in [0, 1]

1) Clamp inputs:
   h_c = h
   s_l_c = clamp(s_l, 0, 100)
   l_c   = clamp(l,   0, 100)
   a_c   = clamp(a,   0, 1)

2) Convert HSLA to RGB (intermediate step):
   s' = s_l_c / 100
   l' = l_c / 100

   c = (1 - |2 * l' - 1|) * s'
   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  = l' - c / 2
   r' = r1 + m
   g' = g1 + m
   b' = b1 + m

3) Convert RGB to HSV:
   max = max(r', g', b')
   min = min(r', g', b')
   delta = max - min

   // Value:
   v = max

   // Saturation in HSV space:
   if max == 0 then s_v' = 0
   else s_v' = delta / max

   // Hue (reused from HSL, but can be recomputed for safety):
   if delta == 0 then h_hsv = 0
   else if max == r' then h_hsv = 60 * (((g' - b') / delta) mod 6)
   else if max == g' then h_hsv = 60 * (((b' - r') / delta) + 2)
   else if max == b' then h_hsv = 60 * (((r' - g') / delta) + 4)

4) Scale to final units:
   H = h_hsv  // often equal to h_c
   S_v = s_v' * 100
   V   = v * 100

5) Compose HSVA:
   hsva(H, S_v%, V%, a_c)

Helper:
   clamp(x, min, max) = min if x < min, max if x > max, else x

Во многих рабочих процессах вы сохраняете угол оттенка и значение альфа неизменными и только переосмысляете, как выражаются насыщенность и яркость. Конвертер проходит через RGB, чтобы убедиться, что окончательные значения HSV описывают ту же точку в цветовом пространстве, что и исходные значения HSL.

Пример для hsla(196, 49%, 54%, 0.8)
1) Преобразование HSL в RGB:
   hsl(196, 49%, 54%) -> rgb(79, 163, 194) (округлено)
2) Преобразование RGB(79, 163, 194) в HSV:
   hsv(196, 59%, 76%) (округлено)
3) Сохранить альфа:
   hsva(196, 59%, 76%, 0.8)

Как работает преобразование HSLA в HSVA шаг за шагом

Преобразование из HSLA в HSVA в основном связано с изменением способа описания яркости и интенсивности. Обе модели используют оттенок и альфа аналогичным образом, но различаются в том, как они определяют вторую и третью оси.

hsla(210, 39%, 17%, 0.5)
-> hsl(210, 39%, 17%)
-> rgb(r, g, b)
-> hsv(h, s, v)
-> hsva(h, s, v, a)

Вот более конкретный пример для hsla(210, 39%, 17%, 0.5).

  • Шаг 1 - Интерпретируйте HSLA как RGB плюс альфа

    На мгновение уберите альфа-канал и выполните алгоритм HSL в RGB. Это даст вам три числовых канала от 0 до 1, которые кодируют один и тот же цвет.

    h = 210, s_l = 39, l = 17
    rgb(26, 43, 60) после округления
  • Шаг 2 - Вычислите HSV из RGB

    Используйте максимальные и минимальные каналы RGB для вычисления значения и насыщенности в терминах HSV. При желании пересчитайте оттенок из RGB, чтобы обеспечить числовую стабильность.

    max = max(r', g', b')
    min = min(r', g', b')
    delta = max - min
    v = max
    if max == 0 then s_v = 0 else s_v = delta / max
  • Шаг 3 - Присоедините альфа и выразите как HSVA

    Как только у вас есть оттенок, насыщенность и значение, используйте оригинальную альфу и запишите все вместе как hsva.

    hsva(210, 57%, 24%, 0.5)

Та же последовательность работает для любого цвета HSLA, поэтому конвертер или вспомогательная функция обычно являются самым простым способом поддерживать синхронизацию инструментов на основе HSV с токенами на основе HSLA.

Выбор между HSLA и HSVA

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

Когда HSLA полезен

  • Проектирование тем и палитр: Контроль на основе светлоты упрощает создание оттенков и теней из одного базового оттенка.
  • Документирование дизайнерских решений: Значения HSLA четко показывают, как насыщенность и светлота изменяются в разных состояниях.
  • Согласование светлых и темных режимов: Регулирование светлоты при сохранении стабильного оттенка — распространенный подход для кросс-тематической согласованности.

Когда HSVA лучше подходит

  • Интерактивные цветовые пикеры: Ползунки для оттенка, насыщенности, значения и альфа интуитивно понятны для исследования цветов.
  • Процедурные эффекты и градиенты: Контроль на основе значения иногда может казаться более естественным, чем светлота в сценариях рисования и освещения.
  • Инструменты, которые уже используют HSV: Многие библиотеки и редакторы используют HSV в качестве своей основной модели управления.

Резюме

Используйте HSLA для планирования палитры и написанных спецификаций. Преобразуйте эти значения в HSVA, когда вы вставляете их в инструменты и компоненты, которые ожидают ползунки и элементы управления в стиле HSV.

Лучшие практики для совместного использования HSLA и HSVA

HSLA и HSVA могут сосуществовать в проекте, если вы определите четкие роли для каждой и полагаетесь на конвертеры вместо ручного редактирования.

Определите, где находится каждая модель

  • Используйте HSLA для токенов и спецификаций: храните базовые цвета и состояния в виде значений HSLA, которые легко читать и обновлять.
  • Используйте HSVA в инструментах и пикерах: представляйте ползунки HSV и элементы управления альфа в интерактивных интерфейсах и внутренних редакторах.

Сочетайте с другими цветовыми форматами

  • Преобразуйте через RGB, когда это необходимо: переход между HSLA, HSVA, RGBA и HEXA обычно использует RGB в качестве промежуточного, что поддерживают большинство библиотек.
  • Ограничивайте сгенерированные значения: всегда сохраняйте оттенок, насыщенность, светлоту, значение и альфа в допустимых диапазонах, когда вы генерируете или анимируете цветовые вариации.

Сохраняйте систему поддерживаемой

  • Документируйте роли форматов: укажите, где ожидаются HSLA, HSVA, RGB и HEX, чтобы будущие изменения были простыми.
  • Используйте утилиты преобразования: автоматизированные помощники поддерживают синхронизацию палитр между моделями и уменьшают количество ошибок.

С небольшим количеством структуры HSLA и HSVA усиливают друг друга, а не конкурируют, и ваша цветовая система остается более легкой для эволюции со временем.

Таблица преобразования HSLA в HSVA

В таблице ниже перечислены несколько знакомых цветов с прозрачностью как в формате HSLA, так и в формате HSVA. Числа округлены, чтобы их было легко читать; используйте конвертер в верхней части страницы, когда вам нужны точные значения.

Справочная таблица HSLA в HSVA
ОписаниеHSLAHSVA
Белый 50%hsla(0, 0%, 100%, 0.5)hsva(0, 0%, 100%, 0.5)
Черный 50%hsla(0, 0%, 0%, 0.5)hsva(0, 0%, 0%, 0.5)
Красный 80%hsla(0, 100%, 50%, 0.8)hsva(0, 100%, 100%, 0.8)
Зеленый 40%hsla(120, 100%, 50%, 0.4)hsva(120, 100%, 100%, 0.4)
Синий 30%hsla(240, 100%, 50%, 0.3)hsva(240, 100%, 100%, 0.3)
Желтый 60%hsla(60, 100%, 50%, 0.6)hsva(60, 100%, 100%, 0.6)
Циан 70%hsla(180, 100%, 50%, 0.7)hsva(180, 100%, 100%, 0.7)
Магента 90%hsla(300, 100%, 50%, 0.9)hsva(300, 100%, 100%, 0.9)
Накладной серыйhsla(0, 0%, 7%, 0.5)hsva(0, 0%, 7%, 0.5)
Мягкий серыйhsla(0, 0%, 20%, 0.5)hsva(0, 0%, 20%, 0.5)
Граница панелиhsla(0, 0%, 33%, 0.5)hsva(0, 0%, 33%, 0.5)
Акцентный оранжевый 70%hsla(39, 100%, 50%, 0.7)hsva(39, 100%, 100%, 0.7)
Фиолетовая наложениеhsla(300, 100%, 25%, 0.5)hsva(300, 100%, 50%, 0.5)
Бирюзовая наложениеhsla(180, 100%, 25%, 0.5)hsva(180, 100%, 50%, 0.5)

Для любого другого значения HSLA вы можете использовать конвертер в верхней части страницы, чтобы вычислить соответствующий цвет HSVA, используя описанный выше алгоритм.

Часто задаваемые вопросы: HSLA в HSVA

  • Почему преобразовывать HSLA в HSVA

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

  • Определяют ли HSLA и HSVA разные цвета

    Нет. Обе это разные способы описания одного и того же цветового пространства на основе RGB. Разница заключается в том, как определяются яркость и интенсивность, а не в том, какие цвета доступны.

  • Меняется ли значение альфа во время преобразования

    В типичных рабочих процессах значение альфа копируется напрямую из HSLA в HSVA, поскольку оба формата используют один и тот же диапазон от 0 до 1 для прозрачности.

  • Могу ли я преобразовать HSVA обратно в HSLA

    Да. Вы можете преобразовать HSVA в RGB, затем преобразовать RGB в HSL и повторно использовать значение альфа, чтобы снова получить HSLA.

  • Является ли одна модель всегда лучше другой

    Не совсем. HSLA, как правило, более удобен для проектирования палитр и документации, в то время как HSVA обычно лучше подходит для ползунков и интерактивных элементов управления. Нормально использовать обе модели в одном проекте с четкими правилами преобразования.

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