Pillow圖像顏色處理的具體使用

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 色彩模式表示紅色,格式如下:

HSL(0,100%,50%)

此時的顏色為“純紅色”,等同於 RGB (255,0,0)。如果想瞭解有關 HSL/HSB 的更多知識,點擊鏈接前往。

ImageColor 模塊比較簡單,隻提供瞭兩個常用方法,分別是 getrgb() 和 getcolor() 函數。

getrgb()方法

顧名思義,該函數用來得到顏色的 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)

輸出結果如下:

(0, 0, 255)

(220, 220, 220)

(255, 0, 0)

通過 new() 方法可以新建圖像,此時也可以使用 ImageColor.getrgb(),如下所示:

#使用new()繪制新的圖像
im= Image.new("RGB", (200, 200), ImageColor.getrgb("#EEB4B4"))
im.save("C:/Users/Administrator/Desktop/xin.jpg")

顯示圖片如下:

圖1:新建圖像

getcolor()

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

PIL.ImageColor.getcolor(color, mode)

參數說明如下:

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

使用示例如下:

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

輸出結果:

191

(255, 255, 0, 255)

示例——修改證件照背景色

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圖像顏色內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: