def from_rgb_to_paletton_hue(r, g, b, color_wheel):
from colorsys import rgb_to_hsv
h, s, v = rgb_to_hsv(r, g, b)
wheel_hues = tuple(
rgb_to_hsv(*color_wheel[k][:3])[0] for k in sorted(color_wheel.keys())
)
if h in wheel_hues:
paletton_hue = wheel_hues.index(h) * 15
else:
i = sorted(wheel_hues + (h,)).index(h)
wheel_start = (i - 1) * 15
wheel_end = i * 15 if i < len(wheel_hues) else 360
h1 = wheel_hues[i-1]
h2 = wheel_hues[i] if i < len(wheel_hues) else 1.
k = (h - h1) / (h2 - h1)
log.debug(
"k=%s, h=%s, h1=%s, h2=%s, i1=%s, i2=%s",
k, h, h1, h2, wheel_start, wheel_end
)
paletton_hue = round(
wheel_start + k * (wheel_end - wheel_start)
)
paletton_hue %= 360
return paletton_hue
评论列表
文章目录