通过MCP连接 →

输入计算

数学公式

广告

结果

HSL 颜色
hsl(9.13, 100%, 63.92%)
色相、饱和度、亮度
色相 H 9.13°
饱和度 S 100%
亮度 L 63.92%

什么是RGB转HSL转换器?

这个工具能把以RGB模型表示的颜色(红、绿、蓝三个通道,取值均为0–255)转换成HSL模型(色相 Hue、饱和度 Saturation、亮度 Lightness)。对设计师来说,HSL往往更直观,因为它把颜色的色调(色相)与其鲜艳程度(饱和度)以及明暗程度(亮度)分离开来。这套转换方法是通用的,不依赖任何特定设备或国家/地区。

将重叠的 RGB 圆转换为 HSL 颜色圆柱的示意图
RGB 值被转换为由色相、饱和度和亮度组成的 HSL 模型。

如何使用

分别输入颜色的红、绿、蓝三个分量,每个数值都介于0到255之间。点击"计算"即可得到对应的HSL三元组,可直接以hsl(H, S%, L%)的格式粘贴到CSS中使用。

公式详解

首先将每个通道的数值除以255进行归一化,使其落在0–1区间。设maxmin分别为这三个值中的最大值和最小值,并令 \(\Delta = \max - \min\)。亮度为

$$L = \frac{\max + \min}{2}$$

饱和度为

$$S = \frac{\Delta}{1 - \lvert 2L - 1 \rvert}$$

当 \(\Delta = 0\) 时(即灰色)饱和度为0。色相则由数值最大的那个通道推导得出,乘以60°,再归入0–360°范围内。

$$H = 60^{\circ} \times \begin{cases} \dfrac{G^{\prime} - B^{\prime}}{\Delta} \bmod 6 & C_{\max} = R^{\prime} \\[0.6em] \dfrac{B^{\prime} - R^{\prime}}{\Delta} + 2 & C_{\max} = G^{\prime} \\[0.6em] \dfrac{R^{\prime} - G^{\prime}}{\Delta} + 4 & C_{\max} = B^{\prime} \end{cases}$$
展示色相角度、饱和度半径和亮度高度的 HSL 圆柱
色相是角度,饱和度是到轴的距离,亮度是垂直位置。

计算示例

以番茄红 RGB(255, 99, 71) 为例。归一化后:\(R=1\),\(G=0.388\),\(B=0.278\)。\(\max=1\),\(\min=0.278\),\(\Delta=0.722\)。

$$L = \frac{1 + 0.278}{2} = 0.639 \rightarrow 63.9\%$$$$S = \frac{0.722}{1 - \lvert 2 \cdot 0.639 - 1 \rvert} = \frac{0.722}{0.722} = 1 \rightarrow 100\%$$

由于 \(\max = R\),所以

$$H = 60 \times \left(\frac{0.388 - 0.278}{0.722}\right) = 60 \times 0.1525 \approx 9.13^{\circ}$$

最终结果:\(\text{hsl}(9.13, 100\%, 63.92\%)\)。

常见问题

为什么灰色的饱和度为0? 当三个通道的数值相等时,\(\Delta = 0\),此时没有任何颜色信息,饱和度无法定义——按照惯例将其设为0。

H、S、L会四舍五入吗? 显示时会保留两位小数,但实际参与计算的原始数值保留了完整精度。

可以反向转换吗? 可以——HSL转RGB是它的逆过程,需要借助色相所在的扇区和色度(chroma)来完成。

最后更新: