python手記(四):pillow(二) ImageChops類 視覺衝擊(圖片像素點運算)

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

 

 

 

咳咳(清下嗓子,準備發話),自娛自樂型人格分裂患者。haaa。

前面我們簡單看了pillow的基礎Image類。現在我們成功的過度了,進入下個地圖,刷怪,升級。反正都是一起學習嘛,我能力就這麼點,我是不行了,您湊活喫。

您可能需要一張牀,一面牆,一個冰箱。哈,扯回來,進入主題。

這次我們來看ImageChops類,chops,頜,顎,排;的意思。我也不曉得,爲啥要起介個名字。英語水平差,領會不到其中的含義。但還好,怪醜不醜,不影響操作,該打還打。

(

後記:

)

爲了便於演示,先鋪墊一下。

首先是用到的圖片素材:

第二張圖不那麼的和諧,無妨無妨,別問我爲啥總是這幾張圖。因爲......我重情。我把好看的圖片都測試完了,你們玩的時候就沒新意了,ok?(爲自己的懶惰找藉口完畢)

第二項,我寫個main函數,然後調用一個個函數,來簡單說明這個類吧。

if __name__ == '__main__':
    im1 = Image.open('1.jpg')
    im2 = Image.open('3.jpg')
    add(im2, im1)#這裏調用函數
    im1.close()
    im2.close()

鋪墊完成,先說下這個類的核心思想,這個類對圖片進行了一些運算操作,嗯,怎麼理解呢,我是這樣認爲的。我們知道圖片由一個個像素點構成,每個像素點又都有像素值,我們一個個像素點去處理,修改他們的像素值,最後再保存處理完的圖片,just so so。還有一點,此類方法的處理對象一般爲im.mode是L或者RGB的圖片,其他類型可能出錯。

每個方法的後面我會寫出具體的運算,當然這些,官網上也都有,大家可以自行去查看。

 

此類會對你的視覺造成極大的震撼,色盲,色弱,色狼,心臟病患者避讓。(好像除了最後一種病人,其他病狀都對視覺刺激免疫啊......)

 

ImageChops.add(im1,im2,scale=.0,offset=0),加運算

def add(im1,im2):
    im3 = ImageChops.add(im1,im2,scale=2.0,offset=0)#scale=1.0 offset=0
    im3.save('add.jpg')
    im3.close()

此方法有四個參數,前兩個無需多談,兩個待處理Image對象,scale,等級,規模。offset,抵消偏移量。不扯這些名詞了。

其實做的就是這個運算:

out = ((image1 + image2) / scale + offset)

這裏的scale默認是1.0,offset是零。我分別用scale爲1.0和2.0做了測試,看下效果:

 

(我覺得好看,你覺得呢?嗯,真香~~)

 

ImageChops.add_modulo(im1, im2)

還有個與之類似的加運算:

out = ((image1 + image2) % MAX),max是最大255。

def add_modulo(im1, im2):
    im3 = ImageChops.add_modulo(im1, im2)
    im3.save('add_modulo.jpg')
    im3.close()

就像開頭說的這個類就是對像素值做了運算操作,其他的方法,我就直接寫完代碼,就展示結果了,必要說的地方再談下。

看結果:

這個比較炫酷是吧。(藍色描邊,skr~~ skr~~~)

 

ImageChops.darker(im1, im2)

這個方法更酷,我是說名字。我起名爲暗黑者,算了不胡扯了,這個方法原理上很簡單,他是將兩張圖片一個一個像素點比較,留下那個像素深度大的點,最後產生一個新的圖片。

def darker(im1, im2):#一個個像素點去比較  返回深度高的點
    im3 = ImageChops.darker(im1, im2)
    im3.save('darker.jpg')
    im3.close()

看結果:

可怕。

 

ImageChops.lighter(im1, im2)

相對應的,“光明者”!就是和darker相對而已,兩兩比較,留下深度值小的。

def lighter(im1, im2):
    im3 = ImageChops.lighter(im1, im2)
    im3.save('lighter.jpg')
    im3.close()

看結果:

淡淡芒果清香味。(這都是說了個啥!!!)

 

ImageChops.difference(im1, im2)

所做運算:

out = abs(image1 - image2)

兩像素點的絕對差值。

def difference(im1, im2):
    im3 = ImageChops.difference(im1, im2)
    im3.save('difference.jpg')
    im3.close()

看結果:

恐怖懸疑吧這是。(煙火裏的塵埃)

 

ImageChops.invert(im1)

invert,反。很好理解,其實就是取反了。(以下內容可能爲胡扯,請將神獸“理性”召出,自行辨別真僞)我們知道,光視覺三原色(red,green,blue)和水彩染料的三原色(red,yellow,blue)是不同的。但是都有個補色的存在,比如最常知道的黑白等。

這裏的取反,也能說成是顏色的取補吧,自行理解哈。(你的神獸說什麼?別聽他瞎BB?But I can.沒人廢話,沒多複雜。【蹭熱度】)

def invert(im1):
    im3 = ImageChops.invert(im1)
    im3.save('inert.jpg')
    im3.close()

看結果:

靈異事件!(好喜歡這張圖~~~)

你知道熊貓黑白顛倒是啥樣子嗎?

差不多就下面這個樣子:

 

emmmmmmm

 

ImageChops.logical_or(im1,im2)

邏輯或運算:

out = ((image1 or image2) % MAX)

我這裏沒辦法做測試了,大家去找圖片吧,我這幾張圖片不符合處理的類型

還有個與之對應的邏輯與運算。

ImageChops.logical_and(im1,im2),一樣的。

 

ImageChops.multiply(im1,im2)

這個應該就直接看懂了,乘法:

out = image1 * image2 / MAX

def multiply(im1, im2):
    im3 = ImageChops.multiply(im1,im2)
    im3.save('multiply.jpg')
    im3.close()

看效果:

漸漸有了抵抗力。(還記得我說有抵抗力的人羣都是什麼病嗎。【手動笑臉】)

 

ImageChops.offset(im, x, y)

def offset(im):
    im3 = ImageChops.offset(im, 300, 200)
    im3.save('offset.jpg')
    im3.close()

這個方法用於切割圖片,然後再對角互換,啥意思?

看結果:

是不是秒懂,參數x,y就是切割點,也可以只寫一個參數,如果y不給,默認與x相同。

 

ImageChops.screen(im1, im2)

所做運算:

out = MAX - ((MAX - image1) * (MAX - image2) / MAX)

def screen(im1, im2):
    im3 = ImageChops.screen(im1, im2)
    im3.save('screen.jpg')
    im3.close()

看效果:

(需要一副鈦合金眼鏡!!!)

 

ImageChops.subtract(im1, im2, scale=1.0, offset=0),減運算

所做運算:

out = ((image1 - image2) / scale + offset)

def subtract(im1, im2):
    im3 = ImageChops.subtract(im1, im2, scale=1.0, offset=0)
    im3.save('substract.jpg')
    im3.close()

和開頭add一樣,看效果:

驚悚再次襲來。(青青草原......還好不是帽子的顏色)

 

最後一個,和add一樣的subtract。

 

ImageChops.subtract_modulo(im1, im2)

所做運算:

out = ((image1 - image2) % MAX)

def subtract_modulo(im1, im2):
    im3 = ImageChops.subtract_modulo(im1, im2)
    im3.save('subtract_modulo.jpg')
    im3.close()

看效果:

夜空!!!(極速五釐米嗎?爲什麼我突然想到這個,這種畫風,像早期電視卡的時候,劃盤出現的畫面。)

 

ok,介紹完了,其實我還蠻想試試把《星月夜》圖片取補的,白色的夜空是什麼樣的。白雲取補,黑色的雲又是什麼樣的。(烏雲啊,蠢~~~~)

 

好了,先到這裏吧。我要鞠躬下臺嘍。

 

 

後記:

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

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