您的值远远超出了色彩空间的范围:
From the docs http://docs.python.org/2/library/colorsys.html:
所有这些颜色空间中的坐标是浮点值...在所有其他空间[除了 YIQ],坐标都在 0 到 1 之间.
我猜您希望它们是 0 到 255 之间的字节值?先除以 255:
r, g, b = 192, 64, 1
r, g, b = [x/255.0 for x in r, g, b]
h, l, s = colorsys.rgb_to_hls(r, g, b)
r, g, b = colorsys.hls_to_rgb(h, l, s)
r, g, b = [x*255.0 for x in r, g, b]
print r, g, b
这会给你:
192.0 64.0 1.0
如果您想了解为什么当您超出色彩空间范围时会出现如此荒谬的错误。
好吧,首先,阅读文档中链接的两个文档,以了解为什么颜色空间之外的值毫无意义,以及为什么要求它生成不可能的约束的值。然后,为了准确地弄清楚为什么它会以这种方式而不是其他方式失败,您需要知道它使用的是哪种算法——这非常简单,因为文档链接到源代码,这是纯 Python 的并且非常可读。
(PS,我可以想象 9650% 的亮度会是什么样子,但我很好奇 -100% 的饱和度。可能是洛夫克拉夫特式的东西。)