什么是十六进制转 HSL 颜色转换器?
这款工具可以把十六进制颜色代码(也就是 CSS 和设计软件中常见的 #RRGGBB 写法)转换为 HSL 色彩模型,即色相(Hue)、饱和度(Saturation)和亮度(Lightness)。相比十六进制或 RGB,HSL 往往更符合人的直觉,因为它描述颜色的方式贴近我们的思考习惯:它是什么颜色(色相)、有多鲜艳(饱和度)、有多亮或多暗(亮度)。该工具适用于任何基于 RGB 的颜色,除了标准 sRGB 十六进制写法之外,不依赖任何国家或地区的标准。
使用方法
输入一个十六进制颜色值,例如 #3498DB。前面的 # 号可写可不写,三位数的简写格式(如 #0AF)也会被自动展开为 #00AAFF。转换器会返回对应的 HSL 三元组,以及解析出的红、绿、蓝三个通道数值(0–255)。
计算公式详解
首先将十六进制拆分为红、绿、蓝三个字节,并将每个值除以 255,归一化到 0–1 的区间。设 max 和 min 分别为这三个值中的最大值和最小值。亮度就是两者的平均:
$$L = \frac{\max + \min}{2}$$当 max 等于 min 时(即灰色),饱和度为 0。否则,若 \(L > 0.5\),则 \(S = \dfrac{\max - \min}{2 - \max - \min}\);否则 \(S = \dfrac{\max - \min}{\max + \min}\)。色相取决于哪个通道为最大值,并通过乘以 60 换算为角度。
$$S = \begin{cases} \dfrac{\max - \min}{2 - \max - \min}, & L > 0.5 \\[0.6em] \dfrac{\max - \min}{\max + \min}, & L \le 0.5 \end{cases}$$$$H = 60^{\circ} \times \begin{cases} \dfrac{G - B}{d} \bmod 6, & \max = R \\[0.6em] \dfrac{B - R}{d} + 2, & \max = G \\[0.6em] \dfrac{R - G}{d} + 4, & \max = B \end{cases} \qquad d = \max - \min$$
实例演算
以 #3498DB 为例:R = 52,G = 152,B = 219。归一化后:\(r \approx 0.2039\),\(g \approx 0.5961\),\(b \approx 0.8588\)。\(\max = b = 0.8588\),\(\min = r = 0.2039\),因此 \(L = 0.5314\)(53.14%)。由于 \(L > 0.5\),所以
蓝色为最大值,故
$$H = 60 \times \left(4 + \frac{0.2039 - 0.5961}{0.6549}\right) = 60 \times 3.4011 \approx 204.07^{\circ}$$结果为 hsl(204, 70%, 53%)。
常见问题
支持简写的十六进制吗? 支持——像 #F0C 这样的三位数代码会被自动展开。
HSL 数值精确吗? 色相、饱和度和亮度均按完整精度计算,仅在显示时才进行四舍五入;原始数值同样可以查看。
必须加 # 号吗? 不必,无论是否带前导 #,转换器都能正常处理。