十六进制< - > RGB< - >使用Python进行HSV颜色空间转换

时间:2010-08-30 03:04:29

标签: python colors color-space

对于this project我使用Python的colorsys将RGB转换为HSV,反之亦然,以便能够操纵饱和度和亮度,但我注意到某些颜色会产生虚假结果。

例如,如果我采用任何原色,就没有问题:

然而,如果我选择随机RGB颜色并将其转换为HSV,我有时会得到虚假的结果。

当我增加或减少颜色的亮度或饱和度时,有时会出现这些虚假结果。

在这个例子中,亮度10%,20%和饱和度100%是假的:

我不太清楚为什么会这样,也不应该如何解决这个问题。

1 个答案:

答案 0 :(得分: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