Конвертер HSL в RGB: методы в JavaScript, Python и CSS

Чтобы преобразовать значения HSL (оттенок, насыщенность, яркость) в значения RGB (красный, зеленый, синий), вы можете использовать несколько методов в зависимости от языка программирования или инструментов, которые вы используете. Вот некоторые распространенные методы:

  1. JavaScript:

    • Вы можете использовать функцию hslToRgbв JavaScript для преобразования значений HSL в значения RGB. Вот пример:

      function hslToRgb(h, s, l) {
      h /= 360;
      s /= 100;
      l /= 100;
      let r, g, b;
      if (s === 0) {
       r = g = b = l;
      } else {
       const hue2rgb = (p, q, t) => {
         if (t < 0) t += 1;
         if (t > 1) t -= 1;
         if (t < 1 / 6) return p + (q - p) * 6 * t;
         if (t < 1 / 2) return q;
         if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
         return p;
       };
       const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
       const p = 2 * l - q;
       r = hue2rgb(p, q, h + 1 / 3);
       g = hue2rgb(p, q, h);
       b = hue2rgb(p, q, h - 1 / 3);
      }
      return [
       Math.round(r * 255),
       Math.round(g * 255),
       Math.round(b * 255)
      ];
      }
      const hsl = [120, 50, 50]; // Example HSL values
      const rgb = hslToRgb(...hsl);
      console.log(rgb); // Output: [0, 128, 0]
  2. Python (с использованием модуля Colorsys):

    • Вы можете использовать модуль colorsysв Python для преобразования значений HSL в значения RGB. Вот пример:

      import colorsys
      def hsl_to_rgb(h, s, l):
       h /= 360
       s /= 100
       l /= 100
       r, g, b = colorsys.hls_to_rgb(h, l, s)
       return int(r * 255), int(g * 255), int(b * 255)
      hsl = (120, 50, 50)  # Example HSL values
      rgb = hsl_to_rgb(*hsl)
      print(rgb)  # Output: (0, 128, 0)
  3. CSS (с использованием функции hsl()):

    • Если вы работаете с CSS, вы можете напрямую использовать функцию hsl()для указания цветов в формате HSL. Например:

      .my-element {
      background-color: hsl(120, 50%, 50%);
      }