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

1.打開圖片
首先是open方法,open方法用于加載已存在的圖像文件。當(dāng)然,記得資源用完之后要關(guān)閉資源,使用close()方法。
from PILimport Image
f = Image.open("1.jpg")
print(f.size,f.format)
f.close()
結(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é)果如下:

對(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é)果如下。
