python 圖片處理 Pillow庫

Python已成為主流的編程語言之一,也是大多數(shù)軟件工程師必備的技能之一,究其原因是因?yàn)槠鋸?qiáng)大的第三方庫。今天,我們先來介紹其中之一,pillow,用于圖像處理。首先展示一下需要處理的圖像。

1.jpg

1.打開圖片

首先是open方法,open方法用于加載已存在的圖像文件。當(dāng)然,記得資源用完之后要關(guān)閉資源,使用close()方法。

from PILimport Image

f = Image.open("1.jpg")

print(f.size,f.format)

f.close()

結(jié)果如下:

執(zhí)行結(jié)果

其中format屬性指定圖片的類型,size指定圖片的大小。如果圖片不能被打開,那么將會(huì)出現(xiàn)OSError。如果想要查看打開的圖片可以使用show()方法,當(dāng)你使用方法時(shí),圖片會(huì)使用需系統(tǒng)的圖片瀏覽器打開。當(dāng)你想要保存你的圖片時(shí),使用save()方法。


2.裁剪圖片

? pillow裁剪圖片通過設(shè)定圖片的region來截取圖片,主要通過crop方法實(shí)現(xiàn),crop包含一個(gè)元組參數(shù),由四個(gè)值組成,分別指定圖像左側(cè),上側(cè),右側(cè),下側(cè)的位置,從而設(shè)定截取圖片的區(qū)域。如下例。

with Image.open("1.jpg")as f:

????print(f,f.format,f.size,f.mode)

????box = [900,100,1300,700]

????r = f.crop(box)

????print(r)

????try:

????????r.save("2.gif","GIF")

? ? except Exception as e:

????????print(e)

上述代碼,通過box設(shè)定了截取的區(qū)域,然后使用save方法保存圖片,便得到了結(jié)果,但需要注意的是,box的四個(gè)元組的值要符合圖片的規(guī)范,例如左側(cè)值小于右側(cè)值,否側(cè)會(huì)拋出ValueError。裁剪結(jié)果如下:

裁剪結(jié)果

對(duì)于裁剪,還可以拓展一些功能,就是將圖片分解然后重新拼接,下面就是一個(gè)例子。

from PILimport Image

def roll(image, delta):

"""Roll an image sideways."""

? ? xsize, ysize = image.size

????delta = delta % xsize

????if delta ==0:return image

? ? part1 = image.crop((0,0, delta, ysize))

????part1.show()

????part2 = image.crop((delta,0, xsize, ysize))

????part2.show()

????image.paste(part1, (xsize-delta,0, xsize, ysize))

????image.paste(part2, (0,0, xsize-delta, ysize))

????return image

f = Image.open("1.jpg")

f = roll(f,200)

f.show()

f.close()

上面代碼就將圖片分成兩部分,然后通過paste方法,重新組裝成一個(gè)圖片,paste方法有兩個(gè)參數(shù),第一個(gè)參數(shù)為圖片對(duì)象,第二個(gè)參數(shù)為圖片要覆蓋的區(qū)域region。實(shí)現(xiàn)的結(jié)果如下。


組裝結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容