什么是 HSL 转 RGB 转换器?
HSL 是色相(Hue)、饱和度(Saturation)和亮度(Lightness)的缩写,是一种更符合直觉的颜色描述方式:色相是色环上的角度(0–360°),饱和度表示颜色的鲜艳程度(0–100%),亮度则代表颜色的明暗(0–100%)。RGB 用红(Red)、绿(Green)、蓝(Blue)三个通道来描述同一种颜色,每个通道取值 0 到 255,这也是屏幕显示、CSS 样式和图像文件普遍采用的格式。这款转换器能把一个 HSL 颜色精确换算成对应的 RGB 数值。
使用方法
输入以度为单位的色相、以百分比表示的饱和度,以及以百分比表示的亮度。计算器会立即给出对应的 rgb(r, g, b) 三元组,并显示一个实时预览色块,方便你直观确认颜色效果。
公式详解
首先把 \(S\) 和 \(L\) 转换为小数(0–1)。彩度(Chroma)表示颜色的鲜艳度:
$$C = (1 - |2L - 1|)\cdot S$$中间分量为
$$X = C\,(1 - |(H/60 \bmod 2) - 1|)$$而匹配值
$$m = L - \tfrac{C}{2}$$则把整体平移到正确的亮度。色相被划分为六个 60° 的扇区,每个扇区按特定顺序把 \(C\)、\(X\) 和 \(0\) 分配给 \(R\)、\(G\)、\(B\) 三个通道。最后给每个分量加上 \(m\),再乘以 255(四舍五入取整)。
$$(R,G,B) = \big( (R_1+m)\cdot 255,\; (G_1+m)\cdot 255,\; (B_1+m)\cdot 255 \big)$$实例演算
以 HSL(210°, 50%, 60%) 为例:\(S = 0.5\),\(L = 0.6\)。\(C = (1 - |1.2 - 1|) \times 0.5 = (1 - 0.2) \times 0.5 = 0.4\)。\(H/60 = 3.5\),所以 \(X = 0.4 \times (1 - |3.5 \bmod 2 - 1|) = 0.4 \times (1 - 0.5) = 0.2\)。\(m = 0.6 - 0.2 = 0.4\)。落在第 3 个扇区(\(3 \le H/60 < 4\)),得到 \((R',G',B') = (0, X, C) = (0, 0.2, 0.4)\)。各加上 \(m\):
$$(0.4, 0.6, 0.8) \times 255 = (102, 153, 204)$$
常见问题
为什么我的 RGB 数值是取整后的?RGB 各通道都是 0 到 255 之间的整数,因此换算出的数值需要四舍五入到最接近的整数。
饱和度为 0% 会得到什么?完全去饱和的颜色是一种灰色,其数值只取决于亮度——此时 RGB 三个通道的值完全相等。
如果输入超过 360 的色相,会自动取模吗?会的。色相会对 360 取模,所以 370° 等同于 10°。