30秒学会 JavaScript 片段 · 2023年3月25日

30秒学会 JavaScript 片段 – RGB to HSL

Converts a RGB color tuple to HSL format.

  • Use the RGB to HSL conversion formula to convert to the appropriate format.
  • The range of all input parameters is [0, 255].
  • The range of the resulting values is H: [0, 360], S: [0, 100], L: [0, 100].

代码实现

const RGBToHSL = (r, g, b) => {
  r /= 255;
  g /= 255;
  b /= 255;
  const l = Math.max(r, g, b);
  const s = l - Math.min(r, g, b);
  const h = s
    ? l === r
      ? (g - b) / s
      : l === g
      ? 2 + (b - r) / s
      : 4 + (r - g) / s
    : 0;
  return [
    60 * h < 0 ? 60 * h + 360 : 60 * h,
    100 * (s ? (l <= 0.5 ? s / (2 * l - s) : s / (2 - (2 * l - s))) : 0),
    (100 * (2 * l - s)) / 2,
  ];
};

RGBToHSL(45, 23, 11); // [21.17647, 60.71428, 10.98039]

翻译自:https://www.30secondsofcode.org/js/s/rgb-to-hsl