Article snapshot taken from Wikipedia with creative commons attribution-sharealike license.
Give it a read and then ask your questions in the chat.
We can research this topic together.
#!/usr/bin/python
# Diclaimer:
# I only just picked up python. No apologies are made for this code.
def hextriplet2rgb(triplet) :
# assuming the triplet *isn't* prefixed with 0x
value=eval("0x"+triplet)
r=(value & 0xFF0000) / 0x10000
g=(value & 0x00FF00) / 0x100
b=(value & 0x0000FF)
return (r,g,b)
# from http://en.wikipedia.org/CMYK
def rgb2cmyk (rgb) :
r,g,b=rgb
c,m,y=(1 - r / 255.0,1 - g / 255.0,1 - b / 255.0)
C,M,Y,K= (c-min(c,m,y),m-min(c,m,y),y-min(c,m,y),min(c,m,y))
# and additionally, *255 to convert proportion up to 8bits
return tuple(map (lambda proportion: int(proportion*255), ))
# from http://en.wikipedia.org/HSV_color_space
def rgb2hsv (rgb) :
# formula takes fp, bother!
r,g,b = map (lambda x : x/255.0, rgb)
MAX=max(r,g,b)
MIN=min(r,g,b)
# Using a "undefined" instead of None
# because: human readable input
h="undefined" #default
s="undefined" #default
v=MAX
if (v > 0) :
s = (MAX - MIN) / MAX
if (s > 0 and s != "undefined" ):
if r == MAX: h=(0.0+( (g-b)/(MAX-MIN) ))*60
if g == MAX: h=(2.0+( (b-r)/(MAX-MIN) ))*60
if b == MAX: h=(4.0+( (r-g)/(MAX-MIN) ))*60
# Format
H=h
if ( h != "undefined" ):
if h < 0: h+=360
H=int(h)
S=s
if (s!= "undefined") : S=int(s*100)
V=int(v*100)
return (H,S,V)
while True:
print "\n\n"
print "== Color Coordinates =="
hextriplet = raw_input(" \'\'\']\'\'\' = #")
rgb=hextriplet2rgb(hextriplet)
print " \'\'\']\'\'\' (r, g, b) = ",rgb
print " \'\'\']\'\'\' (c, m, y, k) = ",rgb2cmyk(rgb)
print " \'\'\']\'\'\' (h, s, v) = ",rgb2hsv(rgb)