Note: pygame 1.8.1 includes a Color class with many colorspace conversion routines: http://www.pygame.org/docs/ref/color.html
# Python comes with some color conversion methods.
import colorsys
# A typical color value using a 0xFF representation (e.g. pygame)
color = (255, 100, 100)
# Normalization method, so the colors are in the range [0, 1]
def normalize (color):
return color[0] / 255.0, color[1] / 255.0, color[2] / 255.0
# Reformats a color tuple, that uses the range [0, 1] to a 0xFF
# representation.
def reformat (color):
return int (round (color[0] * 255)), \
int (round (color[1] * 255)), \
int (round (color[2] * 255))
# Supported conversions. They require 3 arguments.
hls = colorsys.rgb_to_hls (*normalize (color))
hsv = colorsys.rgb_to_hsv (*normalize (color))
yiq = colorsys.rgb_to_yiq (*normalize (color))
# Reformat a HLS/HSV/YIQ color to a 0xFF RGB representation.
rgb1 = reformat (colorsys.hls_to_rgb (*hls))
rgb2 = reformat (colorsys.hsv_to_rgb (*hsv))
rgb3 = reformat (colorsys.yiq_to_rgb (*yiq))