RGB 转 HSL 怎么算 - 色相/饱和度/亮度换算方法

508 字
3 分钟
RGB 转 HSL 怎么算 - 色相/饱和度/亮度换算方法

🌟 为什么要转成 HSL#

RGB 描述”红绿蓝各多少”,不直观;HSL 描述”色相/饱和度/亮度”,更贴近人的调色直觉。把 RGB 转成 HSL,就能用”改亮度、改饱和度”的方式调色。星点颜色格式转换支持互转。


🧮 换算公式#

设 RGB 归一化到 0~1:R、G、B。

  1. max = max(R,G,B),min = min(R,G,B)
  2. 亮度 L = (max + min) / 2
  3. 饱和度 S:
    • 若 max = min(灰色):S = 0
    • 否则 S = (max − min) / (1 − |2L − 1|)
  4. 色相 H:
    • 若 max = R:H = 60 × ((G − B) / (max − min))
    • 若 max = G:H = 60 × (2 + (B − R) / (max − min))
    • 若 max = B:H = 60 × (4 + (R − G) / (max − min))
    • 若 H < 0,加 360

📐 完整示例:rgb(64, 158, 255)#

  1. 归一化:R=0.251,G=0.620,B=1.000
  2. max=1.000,min=0.251
  3. L = (1.000 + 0.251)/2 = 0.625 → 62.5%
  4. delta = 0.749;S = 0.749 / (1 − |2×0.625 − 1|) = 0.749 / 0.749 = 1.0 → 100%
  5. max 是 B:H = 60 × (4 + (0.251 − 0.620)/0.749) ≈ 60 × 3.508 ≈ 210°

结果:hsl(210, 100%, 63%)。


📋 常见颜色对照#

RGBHSL
rgb(255,0,0)hsl(0, 100%, 50%)
rgb(0,255,0)hsl(120, 100%, 50%)
rgb(0,0,255)hsl(240, 100%, 50%)
rgb(128,128,128)hsl(0, 0%, 50%)
rgb(64,158,255)hsl(210, 100%, 63%)

💡 用 HSL 调色#

目标操作
变亮提高 L
变暗降低 L
更鲜艳提高 S
变灰降低 S
换色只改 H

这就是颜色调整的原理。


⚠️ 注意#

  • 灰色(R=G=B)没有色相,H 定义为 0;
  • H 是角度,转换存在四舍五入误差;
  • 感知亮度与 HSL 亮度不完全一致,专业调色可用 OKLCH。

🔧 常见问题#

HSL 和 HSV 区别? HSL 的 L 是亮度(黑到白),HSV 的 V 是明度(黑到亮色),取色面板常用 HSV。
为什么灰色 S=0? 灰色没有"鲜艳程度",饱和度为 0,色相也无意义。
能反向转吗? 能,[颜色格式转换](https://www.xingdian.net/app/color/convert/)支持 HSL → RGB。

💬 总结#

RGB 转 HSL 就是”先求 max/min,再算 L、S、H”。理解后调色更直观。懒得算就用颜色格式转换输入即得。

立即体验:访问 颜色格式转换

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-09-13,距今已过 32 天

部分内容可能已过时

公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录