1. 程式人生 > >python之PIL庫(Image模塊)

python之PIL庫(Image模塊)

介紹 style 總結 play histogram bubuko 圖像旋轉 thumb clas

PIL(Python Image Library)是python的第三方圖像處理庫,PIL的功能非常的強大,幾乎被認定是Python的官方圖像處理庫了。

由於PIL僅支持到python2.7於是一群誌願者在PIL的基礎上創建了兼容的版本,名字叫Pillow,支持最新的python3,而且擴容了很多特性,所以在python3我們可以直接安裝Pillow。

我們可以去官網查看它的資料:http://effbot.org/。

它可以做的事情:

  • 圖像歸檔(Image Archives)。PIL非常適合於圖像歸檔以及圖像的批處理任務。你可以使用PIL創建縮略圖,轉換圖像格式,打印圖像等等。
  • 圖像展示(Image Display)。PIL較新的版本支持包括Tk PhotoImage,BitmapImage還有Windows DIB等接口。PIL支持眾多的GUI框架接口,可以用於圖像展示。
  • 圖像處理(Image Processing)。PIL包括了基礎的圖像處理函數,包括對點的處理,使用眾多的卷積核(convolution kernels)做過濾(filter),還有顏色空間的轉換。PIL庫同樣支持圖像的大小轉換,圖像旋轉,以及任意的仿射變換。PIL還有一些直方圖的方法,允許你展示圖像的一些統計特性。這個可以用來實現圖像的自動對比度增強,還有全局的統計分析等。

官網中PIL的模塊:

技術分享圖片

這裏主要介紹基本的Image模塊

Image模塊

Image模塊是PIL庫基本的核心類,該模塊提供了很多工廠功能,比如加載圖像和創建新圖像。以下介紹它的一些基本用法

open(filename,mode):打開一張圖像

from PIL import Image

img = Image.open(rD:\workspace\pachong\ceshi\timg.jpg, r)
print(img,type(img))

可以看到:

技術分享圖片

# 獲得圖像的高和寬
h, w = img.size
# 獲得圖像的格式
geshi = img.format
# 獲得圖像的模式
mo = img.mode
# 將文件重新保存為time.png
img.save(time, png)
#
創建縮略圖 img.thumbnail((50,50),resample=Image.BICUBIC) img.show()
# 保存與圖像數據相關的字典
dic = img.info
# 驗證文件是否損壞,如果損壞回報異常
img.verify()
# 翻轉圖像
new_img = img.transpose(Image.FLIP_LEFT_RIGHT)
new_img.show()

可以是下面幾種方法:FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180或 ROTATE_270。

# 顯示圖像
new_img.show()
# 兩張圖片混合,兩個圖像必須具有相同的大小和模式
Image.blend(image1,image2,alpha) ⇒圖像
# 如果alpha為0.0,則返回第一個圖像的副本。如果alpha為1.0,則返回第二個圖像的副本。alpha值沒有限制。
如有必要,剪切結果以適應允許的輸出範圍。
Image.eval(圖像,功能) ⇒圖像
# 將函數(應該采用一個參數)應用於給定圖像中的每個像素
# 色素分離
r, g, b = img.split()
r.show()
g.show()
b.show()
# 旋轉圖像90度
img1 = img.rotate(90)
img1.show()
# 調整大小
img1 = img.resize((100, 100))
img1.show()
# 將一張圖像粘貼到指定位置
im.paste(圖像,方框)
# 調為映像分配存儲並從文件(或從源,從延遲操作)加載它
pix  = img.load
print(pix)
# 返回圖像的直方圖
img_lst = img.histogram()
im.copy() ⇒圖像
#復制圖像。如果您希望將內容粘貼到圖像中,但仍保留原始圖像,請使用此方法。

先簡單總結到這裏,Image模塊單獨使用率是比較低的,以後再總結PIL的其他模塊。

python之PIL庫(Image模塊)