Welcome, guest | Sign In | My Account | Store | Cart
```def RGBToHTMLColor(rgb_tuple):
""" convert an (R, G, B) tuple to #RRGGBB """
hexcolor = '#%02x%02x%02x' % rgb_tuple
# that's it! '%02x' means zero-padded, 2-digit hex values
return hexcolor

def HTMLColorToRGB(colorstring):
""" convert #RRGGBB to an (R, G, B) tuple """
colorstring = colorstring.strip()
if colorstring[0] == '#': colorstring = colorstring[1:]
if len(colorstring) != 6:
raise ValueError, "input #%s is not in #RRGGBB format" % colorstring
r, g, b = colorstring[:2], colorstring[2:4], colorstring[4:]
r, g, b = [int(n, 16) for n in (r, g, b)]
return (r, g, b)

def HTMLColorToPILColor(colorstring):
""" converts #RRGGBB to PIL-compatible integers"""
colorstring = colorstring.strip()
while colorstring[0] == '#': colorstring = colorstring[1:]
# get bytes in reverse order to deal with PIL quirk
colorstring = colorstring[-2:] + colorstring[2:4] + colorstring[:2]
# finally, make it numeric
color = int(colorstring, 16)
return color

def PILColorToRGB(pil_color):
""" convert a PIL-compatible integer into an (r, g, b) tuple """
hexstr = '%06x' % pil_color
# reverse byte order
r, g, b = hexstr[4:], hexstr[2:4], hexstr[:2]
r, g, b = [int(n, 16) for n in (r, g, b)]
return (r, g, b)

def PILColorToHTMLColor(pil_integer):
return RGBToHTMLColor(PILColorToRGB(pil_integer))

def RGBToPILColor(rgb_tuple):
return HTMLColorToPILColor(RGBToHTMLColor(rgb_tuple))

import Image
def getRGBTupleFromImg(file_obj, coords=(0,0)):
"""
Extract an #RRGGBB color string from given pixel coordinates
in the given file-like object.
"""
pil_img = Image.open(file_obj)
pil_img = pil_img.convert('RGB')
rgb = pil_img.getpixel(coords)
return rgb

if __name__ == '__main__':
htmlcolor = '#ff00cc'
pilcolor = HTMLColorToPILColor(htmlcolor)
rgb = HTMLColorToRGB(htmlcolor)
print pilcolor
print htmlcolor
print rgb
print PILColorToHTMLColor(pilcolor)
print PILColorToRGB(pilcolor)
print RGBToPILColor(rgb)
print RGBToHTMLColor(rgb)
print
img = open('/tmp/bkg.gif', 'r')
print getRGBTupleFromImg(img, (0,0))
```

### History

• revision 2 (18 years ago)
• previous revisions are not available