1

如果您有一个输入十六进制颜色代码的表格

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
4

3 回答 3

3

请参阅colorsys

基本上,它是这样工作的:

>>> import colorsys
>>> colorsys.rgb_to_hsv(.3, .4, .2)
(0.25, 0.5, 0.4)
于 2012-06-16T02:13:01.840 回答
1

使用webcolors.txtTools\pynche 中的文件,您可以创建自己的文件,该文件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
于 2012-06-16T02:46:36.580 回答
1

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

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

您可以从任意数量的专门处理此类颜色信息类型的网页中找到字典的值,例如十六进制颜色代码芯片表(10° 分离的色调)或此十六进制颜色代码

尽管考虑到大量的十六进制代码,但我不确定您自己从头开始构建它是否可行。

于 2012-06-16T02:10:53.627 回答