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

如何使用Python实现十六进制Hex颜色码到对应颜色名称的转换

HEX十六进制颜色码转换为标准颜色名称方案

目前不存在全球统一的强制性HEX到颜色名称的映射规则,通用的转换逻辑是基于公开收录的命名色库做最小色差匹配返回对应名称,你示例中#123456对应的Blue Zodiac就是第三方大型通用色库中收录的命名色。

手动实现步骤

  • 准备命名色映射库:可以选择W3C官方140色表、X11色表或者第三方收录的数千款通用命名色表,整理为{颜色名称: (R值, G值, B值)}的键值对格式即可
  • 解析待转换的HEX码:去掉前缀#后将6位字符按前两位、中间两位、后两位拆分,分别转为十进制数得到RGB三元组,比如#123456解析后得到(18, 52, 86)
  • 计算色差:依次计算待匹配RGB值和色库中所有色值的欧氏距离,公式为色差 = √[(R1-R2)² + (G1-G2)² + (B1-B2)²],数值越小说明两个颜色越接近
  • 返回结果:取色差最小的色值对应的颜色名称即可

代码快速实现(Python示例)

你可以直接使用封装好的色库工具完成转换,不需要手动维护色库:

# 提前安装依赖:pip install color-namer
from colornamer import get_color_from_rgb

def hex_to_color_name(hex_str):
    # 处理HEX前缀
    hex_code = hex_str.lstrip("#")
    # 转为RGB数值
    r = int(hex_code[0:2], 16)
    g = int(hex_code[2:4], 16)
    b = int(hex_code[4:6], 16)
    # 匹配颜色名称
    match_result = get_color_from_rgb(r, g, b)
    return match_result["name"]

# 测试示例输入
print(hex_to_color_name("#123456"))
# 输出结果:Blue Zodiac

注意事项

  • 如果你只需要匹配W3C官方定义的140种标准命名色,可以使用webcolors库的hex_to_name方法,该方法仅会返回和输入色值完全一致的官方名称,色差为0才会匹配成功
  • 如果需要匹配示例中的非官方通用色名,必须使用收录量更大的第三方色库做模糊匹配

内容的提问来源于stack exchange,提问作者Abhinav K.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:09:02