我有一个以十六进制表示的颜色列表 - 我需要对它们进行排序以匹配彩虹中颜色的顺序。 - 我可以硬编码排序顺序 - 但我觉得有一种更干净的方法。
下面是一个函数,给定十六进制 RGB 颜色规范,返回其 HSV 颜色:
import colorsys
def get_hsv(hexrgb):
hexrgb = hexrgb.lstrip("#") # in case you have Web color specs
r, g, b = (int(hexrgb[i:i+2], 16) / 255.0 for i in xrange(0,5,2))
return colorsys.rgb_to_hsv(r, g, b)
现在您可以使用它按色调对 RGB 十六进制颜色列表进行排序:
color_list = ["000050", "005000", "500000"] # GBR
color_list.sort(key=get_hsv)
print color_list
通过使用整个 HSV 元组进行排序,您可以确保没有色调(即灰度)的颜色在一致的位置排序,并且具有相同色调但不同饱和度/值的颜色相对于其更饱和/值以一致的顺序排序。尊贵的同行。
如果颜色因饱和度(强度)或值(亮度)而变化很大,您仍然会遇到一些混乱,但这是无法避免的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)