This is an old revision of this page, as edited by Kim Bruning (talk | contribs) at 09:03, 7 April 2004 (thanks for fixing the code, modified slightly for encyclopedic answers :)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 09:03, 7 April 2004 by Kim Bruning (talk | contribs) (thanks for fixing the code, modified slightly for encyclopedic answers :))(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)#!/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)