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

如何直接将HSV值转换为Hexcode格式?无需修改数据框

正确实现HSV转Hexcode的Python方法

问题出在哪

你现在的代码直接把HSV数值当成RGB值来生成Hex字符串,这就是为啥得到的是RGB对应的Hex,不是HSV转换后的正确结果。

正确做法

Python的colorsys模块有现成的hsv_to_rgb函数,但它要求的HSV参数范围是:

  • 色相H:0到1(对应0-360°)
  • 饱和度S:0到1
  • 明度V:0到1

而你的数据框里的HSV值是0-255的整数,所以得先把这些值归一化到0-1范围,转成RGB后再生成Hex格式。

修正后的完整代码

import colorsys
import streamlit as st

def hsv_to_hex(h, s, v):
    # 把0-255范围的S、V归一化到0-1,H如果是0-360就除以360,要是0-255就除以255,根据你数据框的实际情况调整
    h_norm = h / 360.0  # 假设你的H值是0-360范围,按需修改
    s_norm = s / 255.0
    v_norm = v / 255.0

    # 转成RGB(返回的r/g/b是0-1的浮点数)
    r, g, b = colorsys.hsv_to_rgb(h_norm, s_norm, v_norm)

    # 把RGB转成0-255整数,再格式化为两位Hex的字符串
    return '#{:02x}{:02x}{:02x}'.format(int(r * 255), int(g * 255), int(b * 255))

# 测试调用
st.write(hsv_to_hex(66, 172, 17))

注意事项

  • 一定要做归一化:不把HSV值转成0-1范围,colorsys的转换结果肯定不对。
  • Hex格式化用{:02x}:保证每个颜色通道的Hex是两位,比如数值17会转成11,不会出现缺位的情况。
  • 不用改数据框:所有转换逻辑都在函数里处理原始HSV值,直接调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:51:08