python手記(四):pillow(三) ImageColor模塊(顏色的命名)

人生不易且無趣,一起找點樂子吧。歡迎評論,很文章無關也可以。

 

 

 

上次說到ImageChops模塊,這次說下ImageColor。(先把上篇欠的圖補上)上篇的末尾提到《星月夜》的補圖,烏雲的補圖。又鑑於這次的文章沒啥視覺衝擊。把這兩張圖放出來看看。

補色:

烏雲原圖:

處理:

發完了,接下來進入主題吧。來談談我們的ImageColor module。這個模塊很簡單,我們只說兩個方法。然後,我們詳談下,顏色的命名。

一、getrgb()方法:

方法的功能望文生義(又是這個詞,我要吐了,你是真的沒什麼文采。沒文化,還不是莽夫,都不知道自己系拉個~)即可,就是得到顏色的rgb值。參數當然就是個顏色的字符串名字,後面我們會詳談字符串的命名方式。

簡單看下方法的功能,這裏的顏色我們用最簡單的命名方式,也是我們最常用的:‘red’。給這種起名的方法起個名字吧,叫“直接拼”,好接地氣地說。(我喜歡~~~)

from PIL import ImageColor

def color():
    color = 'red'
    print(ImageColor.getrgb(color))

if __name__ == '__main__':
    color()

代碼很簡單,也很好理解,直接看下結果吧。

顯示出了紅色的rgb值。

 

二、getcolor()方法:

第二個方法,其實和getrgb()方法差不多,也是得到顏色值,但是多了一個參數,可以指定mode。

from PIL import ImageColor

def color():
    color = 'red'
    print(ImageColor.getrgb(color))
    print(ImageColor.getcolor(color, 'RGB'))
    print(ImageColor.getcolor(color, 'RGBA'))#ValueError

if __name__ == '__main__':
    color()

用兩個例子,依舊是得到‘red’的顏色值,mode分別是‘RGB’和‘RGBA’。看下結果:

如果顏色的命名識別不出,或者mode無法解析,會彈出ValueError的異常。

總結下,這兩種方法的功能,就是:

convert a color string to an RGB tuple.(原話)(不翻譯,一來不會,二來不準,機智如我【手動邪惡臉】)

 

 

這是ImageColor module的兩個主要方法。接下來我們詳細說下,顏色的命名方式。

我們在用一些顏色的時候,除了直接拼寫單詞外,最經常用的就是十六進制的表示方式。比如#f00代表紅色,#00f代表藍色等。這兩種方式我們在各種語言中會經常使用,而且在寫網頁時,也常用這兩種方式來設置顏色屬性。比如:

<div style="color=#fff">之類的。(這裏不知道寫的對不對哈,有點忘了。)(別動手!!!)

 

我們來看下,其他的表示顏色的命名。

RGB方法,命名形式是這樣的:rgb(red,green,blue)。三顏色參數,分別表示色道值,在0-255之間。也可用0-100%來進行賦值。這和我們html裏面設置長寬有些類似,我們除了width:500px之外,還可以用width:50%來表示。

HSL方法,Hue-Saturation-Lightness。色調,飽和度,明度。表示形式:hsl(h, s, l)。Hue(色調)的取值在0-360之間,0代表red,120代表green,240代表blue。Saturation(飽和度)取值0-100%,0代表灰(gray),100代表全顏色(full color)。Lightness(明度)取值也在0-100%,0代表black,50位normal(正常),100位white。

HSV方法,和HSL同,除了V(value),取值0-100%,0爲black,100位normal。還有一種,HSB,B(brightness)亮度,參數要求和HSV相同。

還有一點需要說明,顏色命名大小寫不敏感,什麼意思,就是‘rgb’和‘RGB’沒差。

我們用剛剛的getrgb()方法整體來搞下,說明情況:

from PIL import ImageColor

def fuc():
    print(ImageColor.getrgb('rgb(255, 0, 0)'))
    print(ImageColor.getrgb('rgb(100%, 0%, 0%)'))
    print(ImageColor.getrgb('hsl(0, 100%, 50%)'))#hue 0-360 0r 120g 240b saturation 0-100% 0灰色 100全綵 lightness 0黑 50正常 100白 高速邏輯函數什麼鬼  色調 飽和度 亮點
    print(ImageColor.getrgb('hsv(0, 100%, 100%)'))#hue saturation value 0-100% 0黑 100正常
    print(ImageColor.getrgb('hsb(0, 100%, 100%)'))#brightness
    print(ImageColor.getrgb('red'))
    print(ImageColor.getrgb('RED'))

if __name__ == '__main__':
    fuc()

也就是說,以上的命名方法,全都表示紅色。你get到了嗎?

 

ok,這就是ImageColor module的主要內容,不寫了,去睡覺。晚安。

 

 

 

後記:

括號內的內容爲第二次審看添加內容,旨在引起您閱讀時極大的舒適。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章