如何确定十六进制代码的主、次或三次颜色?

2024-10-04 11:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一些代码,可以采取一个十六进制颜色,并准确猜测其主要,二级或三级颜色。在

例如,如果我输入#0000FF,或#002FA7,或#004950,它将返回blue。(我不希望它返回AquaBlueCobolt或{},而是简单的颜色blue)。在


Tags: 代码颜色blueaquabluecobolt
2条回答

您可以使用简单的python函数对其进行分类。像黑白(#000000#FFFFFF)这样的颜色,您必须根据您的需求修改函数。因为它为rgb保存了相同的值。在

函数将hex转换为rgb值,取最大值并根据该值进行分类。在

def hex_to_rgb(value):
        value = value.lstrip('#')
        lv = len(value)
        colors = tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
        pri_colrs = ['Red','Green','Blue']
        return pri_colrs[colors.index(max(colors))]

结果

^{pr2}$

这是一个开始-

假设字符串c = '#004950'是一个十六进制的RGB颜色。在

定义一些切片以分隔rgb值

>>> red = slice(1,3)
>>> blue = slice(3,5)
>>> green = slice(5, 7)

你需要找到震级-我将使用一个函数并将其映射到rgb值

^{pr2}$

现在我们需要知道哪一个的震级最高:

>>> # a couple more helpers
>>> from operator import itemgetter
>>> color = itemgetter(0)
>>> value = itemgetter(1)
>>> 
>>> colors = zip(['red', 'green', 'blue'], rgb)
>>> colors = sorted(colors, key = value)
>>> tertiary, secondary, primary = map(color, colors)
>>> primary, secondary, tertiary
('blue', 'green', 'red')
>>>

相关问题 更多 >