Pillow 提供了顏色處理模塊 ImageColor,該模塊支持不同格式的顏色,比如 RGB 格式的顏色三元組、十六進(jìn)制的顏色名稱(#ff0000)以及顏色英文單詞("red")。同時(shí),它還可以將 CSS(層疊樣式表,用來修飾網(wǎng)頁)風(fēng)格的顏色轉(zhuǎn)換為 RGB 格式。
注意,在 ImageColor 模塊對顏色的大小并不敏感,比如 "Red" 也可以寫為 " red"。
顏色命名
ImageColor 支持多種顏色模式的的命名(即使用固定的格式對顏值進(jìn)行表示),比如我們熟知的 RGB 色彩模式,除此之外,還有 HSL (色調(diào)-飽和度-明度)、HSB (又稱 HSV,色調(diào)-飽和度-亮度)色彩模式。下面對 HSL 做簡單介紹:
- H:即 Hue 色調(diào),取值范圍 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%) |
此時(shí)的顏色為“純紅色”,等同于 RGB (255,0,0)。如果想了解有關(guān) HSL/HSB 的更多知識(shí),點(diǎn)擊鏈接前往。
ImageColor 模塊比較簡單,只提供了兩個(gè)常用方法,分別是 getrgb() 和 getcolor() 函數(shù)。
getrgb()方法
顧名思義,該函數(shù)用來得到顏色的 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) |
輸出結(jié)果如下:
(0, 0, 255)
(220, 220, 220)
(255, 0, 0)
通過 new() 方法可以新建圖像,此時(shí)也可以使用 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() 類似,同樣用來獲取顏色值,不過它多了一個(gè)mode參數(shù),因此該函數(shù)可以獲取指定色彩模式的顏色值。語法格式如下:
1
|
PIL.ImageColor.getcolor(color, mode) |
參數(shù)說明如下:
- color:一個(gè)顏色名稱,字符串格式,可以是顏色的英文單詞,或者十六進(jìn)制顏色名。如果是不支持的顏色,會(huì)報(bào) ValueError 錯(cuò)誤;
- mode:指定色彩模式,如果是不支持的模式,會(huì)報(bào) KeyError 錯(cuò)誤。
使用示例如下:
1
2
3
4
|
color4 = ImageColor.getcolor( '#EEA9B8' , 'L' ) print (color4) color5 = ImageColor.getcolor( 'yellow' , 'RGBA' ) print (color5) |
輸出結(jié)果:
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() #遍歷每一個(gè)像素塊,并處理顏色 width, height = img.size #獲取寬度和高度 for x in range ( 0 ,width): for y in range ( 0 ,height): rgb = img_array[x,y] #獲取一個(gè)像素塊的rgb r = rgb[ 0 ] g = rgb[ 1 ] b = rgb[ 2 ] if b> 130 and r< 120 : #判斷規(guī)則 img_array[x, y] = ( 255 , 0 , 0 ) #============3.保存圖片============ img.save( "2.jpg" ) |
到此這篇關(guān)于 Pillow圖像顏色處理的具體使用的文章就介紹到這了,更多相關(guān) Pillow圖像顏色內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:http://c.biancheng.net/pillow/image-color.html