有没有办法在python中使用pygame模块将HSV颜色参数转换为RGB类型颜色参数?我尝试了以下代码,但它返回了荒谬的值。
import colorsys
test_color = colorsys.hsv_to_rgb(359, 100, 100)
print(test_color)
并且此代码返回以下废话
(100, -9900.0, -9900.0)
这显然不是RGB。我究竟做错了什么?
最佳答案
该函数期望s
(饱和度)和v
(值)为小数,而不是百分比。除以100。
>>> import colorsys
# Using percent, incorrect
>>> test_color = colorsys.hsv_to_rgb(359,100,100)
>>> test_color
(100, -9900.0, -9900.0)
# Using decimal, correct
>>> test_color = colorsys.hsv_to_rgb(1,1,1)
>>> test_color
(1, 0.0, 0.0)
如果您需要非标准化的RGB元组,则可以使用此函数包装
colorsys
函数。def hsv2rgb(h,s,v):
return tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h,s,v))
功能示例
>>> hsv2rgb(0.5,0.5,0.5)
(64, 128, 128)