人生不易且無趣,一起找點樂子吧。歡迎評論,很文章無關也可以。
上次說到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的主要內容,不寫了,去睡覺。晚安。
後記:
括號內的內容爲第二次審看添加內容,旨在引起您閱讀時極大的舒適。