- Python语言: html颜色和RGB颜色互转
- #coding=utf-8
- 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)
- img = open('/tmp/bkg.gif', 'r')
- print getRGBTupleFromImg(img, (0,0))
- #该片段来自于http://www.codesnippet.cn/detail/290120131980.html
来源: http://www.codesnippet.cn/detail/290120131980.html