使用Python进行十六进制<->RGB<->HSV颜色空间转换
在这个项目中,我使用Python的colorsys库来把RGB颜色转换成HSV颜色,反之亦然,这样我就可以调整颜色的饱和度和亮度。不过,我发现有些颜色转换出来的结果不太对劲。
比如说,如果我选择任何一种基本颜色,就没有问题:
但是如果我随便选一个RGB颜色,然后把它转换成HSV,有时候结果就会出错。
有时候,当我增加或减少颜色的亮度或饱和度时,这种错误的结果就会出现。
在这个例子中,亮度为10%、20%和饱和度为100%的结果就是不对的:
我不太明白为什么会这样,也不知道该怎么解决这个问题……
1 个回答
2
你遇到的问题出在你的dec2hex代码上:
def dec2hex(d):
"""return a two character hexadecimal string representation of integer d"""
r = "%X" % d
return r if len(r) > 1 else r+r
当你的数值小于16时,你在重复这个数值,换句话说,就是把它乘以17。你应该这样做:
def dec2hex(d):
"""return a two character hexadecimal string representation of integer d"""
return "%02X" % d