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

Преобразуйте rgba(r, g, b, a) значения в hsla(h, s, l, a) без необходимости делать расчеты самостоятельно. Этот инструмент полезен, когда ваши цвета представлены в RGBA в коде, но вы предпочитаете HSLA для токенов, тем или документации по дизайну.

Введите цвет в формате RGBA, и вы сразу увидите соответствующее представление HSLA. Затем вы можете скопировать вызов hsla() в свои стили, дизайн-систему или внутренние цветовые утилиты.

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

Что такое RGBA

RGBA расширяет модель RGB с помощью альфа-канала. Он записывается как rgba(r, g, b, a), где r, g и b — целые числа в диапазоне 0 до 255, а a — число от 0 до 1.

Значение альфа управляет прозрачностью: 0 — полностью прозрачно, 1 — полностью непрозрачно, а значения между ними создают частичную прозрачность. Это делает RGBA хорошим выбором для наложений, теней и мягких переходов.

Поскольку RGBA использует числовые каналы, его легко генерировать или анимировать на JavaScript и использовать в API рендеринга canvas и WebGL.

Что такое HSLA

HSLA — это модель HSL с альфа-каналом. Он записывается как hsla(h, s, l, a), где оттенок выбирает базовый цвет на круге, насыщенность управляет тем, насколько ярким является цвет, светлота управляет тем, насколько темным или ярким он выглядит, а альфа управляет прозрачностью.

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

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

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

rgba(r, g, b, a) -> hsla(h, s, l, a)

Given:
  r, g, b in [0, 255]
  a in [0, 1]

1) Clamp channels:
   r_c = clamp(round(r), 0, 255)
   g_c = clamp(round(g), 0, 255)
   b_c = clamp(round(b), 0, 255)
   a_c = clamp(a,        0, 1)

2) Normalize RGB to [0, 1]:
   r' = r_c / 255
   g' = g_c / 255
   b' = b_c / 255

3) Find max and min:
   max = max(r', g', b')
   min = min(r', g', b')
   delta = max - min

4) Lightness:
   l = (max + min) / 2

5) Saturation:
   if delta == 0 then s' = 0
   else s' = delta / (1 - |2 * l - 1|)

6) Hue:
   if delta == 0 then h = 0
   else if max == r' then h = 60 * (((g' - b') / delta) mod 6)
   else if max == g' then h = 60 * (((b' - r') / delta) + 2)
   else if max == b' then h = 60 * (((r' - g') / delta) + 4)

7) Scale to final units:
   H = h
   S = s' * 100
   L = l * 100

8) Compose HSLA:
   hsla(H, S%, L%, a_c)

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

Красные, зеленые и синие значения сначала нормализуются в диапазон от 0 до 1, затем преобразуются в HSL с использованием стандартных формул. Альфа-компонента передается без изменений, поскольку как RGBA, так и HSLA используют один и тот же диапазон от 0 до 1 для непрозрачности.

Пример для rgba(79, 163, 194, 0.8)
1) Ограничение:
   r_c = 79, g_c = 163, b_c = 194, a_c = 0.8
2) Нормализация и вычисление H, S и L:
   hsl(196, 49%, 54%) (округлено)
3) Итоговый HSLA:
   hsla(196, 49%, 54%, 0.8)

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

На практике преобразование из RGBA в HSLA означает повторное описание того же цвета в другой системе координат, сохраняя то же значение прозрачности.

rgba(26, 43, 60, 0.5)
-> rgb(r, g, b)
-> hsl(h, s, l)
-> hsla(h, s, l, a)

Вот более подробный план процесса для rgba(26, 43, 60, 0.5).

  • Шаг 1 - Нормализуйте RGB-каналы

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

    r' = 26 / 255
    g' = 43 / 255
    b' = 60 / 255
  • Шаг 2 - Вычислите светлоту и насыщенность

    Светлота — это среднее значение самого яркого и самого темного канала. Разница между ними определяет, насколько цвет далек от серого, и используется для вычисления насыщенности.

    max = max(r', g', b')
    min = min(r', g', b')
    l = (max + min) / 2
    if delta == 0 then s = 0 else s = delta / (1 - |2 * l - 1|)
  • Шаг 3 - Выведите оттенок и сохраните альфу

    Оттенок зависит от того, какой канал самый большой и как остальные каналы с ним соотносятся. Альфа-компонента копируется напрямую из оригинального значения RGBA.

    hsla(210, 39%, 17%, 0.5)

Как только вы поймете этот шаблон, становится легко рассматривать RGBA как ваш формат выполнения, а HSLA как более описательное представление для документации и проектирования палитры.

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

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

Когда RGBA подходит лучше всего

  • Реализация и рендеринг: Значения RGBA легко интегрировать в API canvas, WebGL и код низкого уровня рендеринга.
  • Динамические эффекты: регулировать числовые каналы или альфу в JavaScript просто с RGBA.
  • Совместимость с форматами изображений: многие форматы файлов и конвейеры используют данные канала RGBA внутри.

Когда HSLA более практично

  • Проектирование палитр и тем: работа с оттенком, насыщенностью и светлотой упрощает понимание тонов, оттенков и акцентных цветов.
  • Документация по дизайну: Значения HSLA часто легче читать и сравнивать в спецификациях и руководствах.
  • Коммуникация намерений: описание цвета как "синий с низкой насыщенностью и высокой светлотой" напрямую соответствует параметрам HSLA.

Резюме

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

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

Вам не нужно выбирать только один формат для всего проекта. С несколькими простыми правилами RGBA и HSLA могут работать вместе без проблем.

Отделите токены от реализации

  • Используйте HSLA для токенов и документации: храните и объясняйте выбор палитры с точки зрения оттенка, насыщенности и светлоты.
  • Используйте RGBA там, где вы рисуете: при написании стилей или рендеринге на canvas преобразуйте HSLA в RGBA.

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

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

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

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

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

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

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

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

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

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

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

    RGBA удобен для реализации, но HSLA упрощает описание и настройку цветовых систем. Преобразование позволяет вам сохранять числовой контроль в коде, документируя палитры в более удобном для человека формате.

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

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

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

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

  • Могу ли я вернуться из HSLA в RGBA

    Да. Вы можете преобразовать HSLA в RGB и повторно использовать значение альфа, что дает вам представление RGBA того же цвета.

  • Должен ли я хранить токены как RGBA или HSLA

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

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