Pillow 提供了颜色处理模块 ImageColor,该模块支持不同格式的颜色,比如 RGB 格式的颜色三元组、十六进制的颜色名称(#ff0000)以及颜色英文单词("red")。同时,它还可以将 CSS(层叠样式表,用来修饰网页)风格的颜色转换为 RGB 格式。
注意,在 ImageColor 模块对颜色的大小并不敏感,比如 "Red" 也可以写为 " red"。
颜色命名
ImageColor 支持多种颜色模式的的命名(即使用固定的格式对颜值进行表示),比如我们熟知的 RGB 色彩模式,除此之外,还有 HSL (色调-饱和度-明度)、HSB (又称 HSV,色调-饱和度-亮度)色彩模式。下面对 HSL 做简单介绍:
- H:即 Hue 色调,取值范围 0 -360,其中 0 表示“red”,120 表示 “green”,240 表示“blue”;
- S:即 Saturation 饱和度,代表色彩的纯度,取值 0~100%,其中 0 代表灰色(gry),100% 表示色光最饱和;
- L:即 Lightness 明度,取值为 0~100%,其中 0 表示“black”黑色,50% 表示正常颜色,100% 则表示白色。
下面使用 HSL 色彩模式表示红色,格式如下:
1
|
HSL(0,100%,50%) |
此时的颜色为“纯红色”,等同于 RGB (255,0,0)。如果想了解有关 HSL/HSB 的更多知识,点击链接前往。
ImageColor 模块比较简单,只提供了两个常用方法,分别是 getrgb() 和 getcolor() 函数。
getrgb()方法
顾名思义,该函数用来得到颜色的 RGB 值,语法格式如下:
1
|
PIL.ImageColor.getrgb(color) |
使用示例如下:
1
2
3
4
5
6
7
8
9
|
from PIL import Image,ImageColor # getrgb()方法 color1 = ImageColor.getrgb( "blue" ) print (color1) color2 = ImageColor.getrgb( '#DCDCDC' ) print (color2) #使用HSL模式红色 color3 = ImageColor.getrgb( 'HSL(0,100%,50%)' ) print (color3) |
输出结果如下:
(0, 0, 255)
(220, 220, 220)
(255, 0, 0)
通过 new() 方法可以新建图像,此时也可以使用 ImageColor.getrgb(),如下所示:
1
2
3
|
#使用new()绘制新的图像 im = Image.new( "RGB" , ( 200 , 200 ), ImageColor.getrgb( "#EEB4B4" )) im.save( "C:/Users/Administrator/Desktop/xin.jpg" ) |
显示图片如下:
图1:新建图像
getcolor()
该方法与 getrgb() 类似,同样用来获取颜色值,不过它多了一个mode参数,因此该函数可以获取指定色彩模式的颜色值。语法格式如下:
1
|
PIL.ImageColor.getcolor(color, mode) |
参数说明如下:
- color:一个颜色名称,字符串格式,可以是颜色的英文单词,或者十六进制颜色名。如果是不支持的颜色,会报 ValueError 错误;
- mode:指定色彩模式,如果是不支持的模式,会报 KeyError 错误。
使用示例如下:
1
2
3
4
|
color4 = ImageColor.getcolor( '#EEA9B8' , 'L' ) print (color4) color5 = ImageColor.getcolor( 'yellow' , 'RGBA' ) print (color5) |
输出结果:
191
(255, 255, 0, 255)
示例——修改证件照背景色
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import PIL.Image as Image #============1.打开图片============ img = Image. open ( '1.jpg' ) #============2.处理图片============ #将图片分成小方块 img_array = img.load() #遍历每一个像素块,并处理颜色 width, height = img.size #获取宽度和高度 for x in range ( 0 ,width): for y in range ( 0 ,height): rgb = img_array[x,y] #获取一个像素块的rgb r = rgb[ 0 ] g = rgb[ 1 ] b = rgb[ 2 ] if b> 130 and r< 120 : #判断规则 img_array[x, y] = ( 255 , 0 , 0 ) #============3.保存图片============ img.save( "2.jpg" ) |
到此这篇关于 Pillow图像颜色处理的具体使用的文章就介绍到这了,更多相关 Pillow图像颜色内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:http://c.biancheng.net/pillow/image-color.html