pillow 圖像顏色處理

2022-08-29 16:11 更新

Pillow 提供了顏色處理模塊 ImageColor,該模塊支持不同格式的顏色,比如 RGB 格式的顏色三元組、十六進(jìn)制的顏色名稱(#ff0000)以及顏色英文單詞("red")。同時,它還可以將 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 色彩模式表示紅色,格式如下:

HSL(0,100%,50%)

此時的顏色為“純紅色”,等同于 RGB (255,0,0)。

ImageColor 模塊比較簡單,只提供了兩個常用方法,分別是? getrgb()? 和 ?getcolor()? 函數(shù)。


getrgb()方法

顧名思義,該函數(shù)用來得到顏色的 RGB 值,語法格式如下:

PIL.ImageColor.getrgb(color)

使用示例如下:

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()? 方法可以新建圖像,此時也可以使用 ?ImageColor.getrgb()?,如下所示:

from PIL import Image,ImageColor
#使用new()繪制新的圖像
im= Image.new("RGB", (200, 200), ImageColor.getrgb("#EEB4B4"))
im.save("./xin.jpg")

顯示圖片如下:

pillow圖像處理

圖1:新建圖像


getcolor()

該方法與 ?getrgb()? 類似,同樣用來獲取顏色值,不過它多了一個??mo?d?e?參數(shù)?,因此該函數(shù)可以獲取指定色彩模式的顏色值。語法格式如下:

PIL.ImageColor.getcolor(color, mode)

參數(shù)說明如下:

  • color:一個顏色名稱,字符串格式,可以是顏色的英文單詞,或者十六進(jìn)制顏色名。如果是不支持的顏色,會報 ValueError 錯誤;
  • mode:指定色彩模式,如果是不支持的模式,會報 KeyError 錯誤。

使用示例如下:

color4=ImageColor.getcolor('#EEA9B8','L')
print(color4)
color5=ImageColor.getcolor('yellow','RGBA')
print(color5)

輸出結(jié)果:

191
(255, 255, 0, 255)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號