使用Python查找颜色的色调?

时间:2012-06-16 02:08:52

标签: python

如果你有一个用于输入十六进制颜色代码的表单

FFFFFF

你如何确定他们的色调?像青色,橙色等......?

所以,如果有人输入

#FF8000

色调将打印在橙色页面上。

如果可能的话,你能解释一下这是如何运作的吗?或者链接我解释它的东西?

在我的主python脚本中输入此代码以便能够转换为HSV是否合理?

        #RGB to HSV start
    ONE_THIRD = 1.0/3.0
    ONE_SIXTH = 1.0/6.0
    TWO_THIRD = 2.0/3.0
    def rgb_to_hsv(r, g, b):
        maxc = max(r, g, b)
        minc = min(r, g, b)
        v = maxc
        if minc == maxc:
            return 0.0, 0.0, v
            s = (maxc-minc) / maxc
            rc = (maxc-r) / (maxc-minc)
            gc = (maxc-g) / (maxc-minc)
            bc = (maxc-b) / (maxc-minc)
        if r == maxc:
            h = bc-gc
        elif g == maxc:
            h = 2.0+rc-bc
        else:
            h = 4.0+gc-rc
            h = (h/6.0) % 1.0
            return h, s, v

    #RGB to HSV end

3 个答案:

答案 0 :(得分:3)

请参阅colorsys

基本上,它的工作原理如下:

>>> import colorsys
>>> colorsys.rgb_to_hsv(.3, .4, .2)
(0.25, 0.5, 0.4)

答案 1 :(得分:1)

我不确定是否有一种简单的算法方法可以解决这个问题,以提出准确和描述性的颜色指定。我认为需要进行某种查询。

除非您已经可以访问十六进制代码/描述的数据库,否则一种方法是使用一个字典,其中您的密钥将是您的十六进制代码,值将是相应的描述是一种方法。您可以查找十六进制代码并显示相应的颜色描述。

您可以从专门针对该排序类型的颜色信息的任意数量的网页中找到您的字典的值,例如Hexadecimal Color Code Chips Table (Hue at 10° of separation)或此Hexadecimal Color Codes

虽然给出了大量的十六进制代码,但我不确定你是否可以从头开始构建它。

答案 2 :(得分:1)

使用Tools \ pynche中的文件webcolors.txt,您可以创建自己的function,它将返回传递的十六进制值的颜色名称:

with open ('Tools\pynche\webcolors.txt') as f:
      color_dict={x.split()[1].strip():x.split()[0].strip() for x in f.readlines()[1:]}

color_dict['fetch']=lambda x:color_dict.get(x.lower(),'color not found')


print( color_dict['fetch']('#ffFF00') )
print( color_dict['fetch']('#AAdd00') )
print(color_dict['fetch']('#FFFFFF'))

输出:

Yellow
color not found
White