ImageColor模块包括颜色表格和从CSS3样式颜色转化为RGB元组的转换器。除了别的,这个模块多用于Image.new函数和ImageDraw模块。
一、ImageColor模块支持的字符串
ImageColor模块支持的字符串格式如下:
1、 十六进制颜色说明符
定义为“#rgb”或者“#rrggbb”。例如,“#ff0000”表示纯红色。
2、 RGB函数
定义为“rgb(red, green,blue)”,变量red、green、blue的取值为[0,255]之间的整数。另外,颜色值也可以为[0%,100%]之间的三个百分比。例如,“rgb(255, 0, 0)”和“rgb(100%, 0%, 0%)”都表示纯红色。
3、 HSL(Hue-Saturation-Lightness)函数
定义为“hsl(hue,saturation%, lightness%)”,变量hue为[0,360]一个角度表示颜色(red=0, green=120, blue=240),变量saturation为[0%,100%]之间的一个值(gray=0%,full color=100%),变量lightness为[0%,100%]之间的一个值(black=0%, normal=50%, white=100%)。例如,“hsl(0, 100%, 50%)”为纯红色。
4、 通用HTML颜色名称
ImageColor模块提供了140个标准颜色名称,Xwindow系统和大多数web浏览器都支持这些颜色。颜色名称对大小写不敏感。例如,“red”和“Red”都表示纯红色。
二、ImageColor模块的函数
1、 Getrgb
定义:getrgb(color) ⇒ (red, green, blue)
含义:(New in 1.1.4)将颜色字符串转换为RGB元组。如果字符串不能被解析,该函数将产生ValueError异常。
例子:
>>> from PIL import ImageColor
>>>ImageColor.getrgb("#ff0000")
(255, 0, 0)
>>>ImageColor.getrgb("rgb(255,0,0)")
(255, 0, 0)
>>>ImageColor.getrgb("rgb(100%,0%,0%)")
(255, 0, 0)
>>>ImageColor.getrgb("hsl(0,100%,50%)")
(255, 0, 0)
>>>ImageColor.getrgb("red")
(255, 0, 0)
>>>ImageColor.getrgb("Red")
(255, 0, 0)
上述例子使用六种方式来产生红色。
2、 getcolor
定义:getcolor(color,mode) ⇒ (red, green,blue) or integer
含义:(New in 1.1.4)和函数getrgb()功能一样,但是如果变量mode不是颜色或者调色板图像,它将RGB值转换为灰色值。如果字符串不能被解析,该函数将产生ValueError异常。
例子:
>>>from PIL import ImageColor
>>>ImageColor.getcolor("Red", "RGB")
(255, 0, 0)
>>>ImageColor.getcolor("Red", "L")
76
>>>ImageColor.getcolor("Red", "P")
(255, 0, 0)
>>>ImageColor.getcolor("Red", "1")
76
>>>ImageColor.getcolor("rgb(200,0,0)", "1")
59
由上面的例子可看出来,如果变量mode不是“RGB”或者“P”的时候,该函数会将颜色转换为一个整数,即灰度值。