Skip to main content

RGBColorConversion — wiki

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))