我正在为具有PyQt5的Krita做HSV颜色选择器。我想利用QColor类来处理显示颜色转换,但我无法成功转换颜色。
我使用这个颜色选择器作为我的输出的参考:
https://www.google.com/search?sxsrf=ACYBGNR9_2R1jGyxkqbdM8DVZfU-8hogYg%3A1583142187803&source=hp&ei=K9VcXqrKLuyMlwTorLH4Dg&q=color+picker+hex&oq=color+picker&gs_l=psy-ab.3.0.35i39l2j0l8.3060.6761..8026...2.0..0.310.1102.11j3-1......0....1..gws-wiz.....10..35i362i39j0i10.C-faeoukSfM
随机选择的颜色是:
HEX=(#eb4034)
HSV=(7, 78, 92)
当我尝试用这个代码转换它时:
from PyQt5.QtGui import QColor
hsv = QColor.fromHsv(7,78,92,255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)
print(str( color ))
我的输出是:
92.0 | 67.14007782101167 | 63.85992217898833
[Finished in 0.168s]
而不是:
235, 64, 52
如何将HSV颜色输入到QColor中,然后将其转换为RGB以进行显示?
提前感谢
HVS颜色(即(7, 78, 92)
(的参考值分别以度、百分比和百分比为单位,而QColor.fromHSV
的值应在0-255之间。要将参考值转换为QColor
可以使用的值,您可以尝试类似的方法
HSV=(7, 78, 92)
hue, sat, value = HSV
hue = int(hue*255/360)
sat = int(sat*255/100)
value = int(value*255/100)
hsv = QColor.fromHsv(hue, sat, value, 255)
color = str(hsv.redF()*255)+" | "+str(hsv.greenF()*255)+" | "+str(hsv.blueF()*255)
print(str( color ))
# output: 234.0 | 64.42023346303502 | 52.307392996108945
您可以使用getRgb((方法获取一个值为的元组
>>> hsv = QColor.fromHsv(7,78,92,255)
>>> hsv.getRgb()
(92, 67, 64, 255)
您会注意到这些值与您预期的不同,这是因为颜色十六进制#eb4034与HSV(7,78,92(不同。
>>> hsv.name()
'#5c4340'
>>> QColor('#eb4034').getHsv()
(3, 199, 235, 255)
请确保使用正确的HSV值。