You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python不使用第三方库如何实现HSL颜色转HSV颜色?

无第三方库实现HSL转HSV的Python方案

核心转换逻辑

HSL和HSV的色相(H)取值完全相同,仅需对饱和度(S)、明度(V/L)做转换,转换前需先将HSL的S、L从百分比数值转换为0~1区间的小数:

  • 计算HSV的明度V:V = L + S_l * min(L, 1 - L)
  • 计算HSV的饱和度S:若V为0则S=0,否则 S = 2 * (1 - L / V)
  • 计算完成后将S、V转换回百分比数值,和原有HSL输出格式对齐

完整代码实现

def HEX2HSV(hex):
    hsl = HEX2HSL(hex)  # 该函数返回Hex颜色码转换后的HSL值,格式如{'h': 300, 's': 67.0, 'l': 80.0}
    # 提取HSL参数,将百分比转成0~1区间小数计算
    h = hsl['h']
    s_l = hsl['s'] / 100
    l = hsl['l'] / 100

    # 计算HSV的v值
    v = l + s_l * min(l, 1 - l)
    # 计算HSV的s值,处理v=0的边界情况
    if v == 0:
        s_v = 0
    else:
        s_v = 2 * (1 - l / v)
    
    # 转回百分比格式,保留1位小数
    return {
        'h': h,
        's': round(s_v * 100, 1),
        'v': round(v * 100, 1)
    }

# 测试样例
convertedhsv = HEX2HSV('#eeaaee')
# 输入对应HSL为{'h':300,'s':67.0,'l':80.0},转换后输出为 {'h': 300, 's': 28.7, 'v': 93.4}

注意事项

  • 若你的HEX2HSL函数返回的s、l是0~1区间的小数而非百分比数值,删除代码中s_l = hsl['s'] / 100和l = hsl['l'] / 100的除以100逻辑即可
  • 可根据业务需求调整round的参数修改数值保留的小数位数

内容的提问来源于stack exchange,提问作者Experi Ment

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:36:01