PIL( Python Imaging Library)是 Python 的第三方圖像處理庫,由於其功能豐富,API 簡潔易用,因此深受好評。
自 2011 年以來,由於 PIL 庫更新緩慢,目前僅支持 Python 2.7 版本,這明顯無法滿足 Python3 版本的使用需求。於是一羣 Python 社區的志願者(主要貢獻者:Alex Clark 和 Contributors)在 PIL 庫的基礎上開發了一個支持 Python3 版本的圖像處理庫,它就是 Pillow。
Pillow 不僅是 PIL 庫的“複製版”,而且它又在 PIL 庫的基礎上增加了許多新的特性。Pillow 發展至今,已經成為了比 PIL 更具活力的圖像處理庫。
Pillow 的初衷只是想作為 PIL 庫的分支和補充,如今它已是“青出於藍而勝於藍”。
除了 PIL 和 Pillow 庫之外,Python 還提供了一些其他圖像處理庫:
- Scikit-image:一款基於 scipy 科學計算的圖像處理軟件包,以數組的形式對圖像進行處理;
- OpenCV:其實是一個 C++ 圖像處理庫,不過它提供了 Python 語言的接口。
Pillow 是 Python 中較為基礎的圖像處理庫,主要用於圖像的基本處理,比如裁剪圖像、調整圖像大小和圖像顏色處理等。與 Pillow 相比,OpenCV 和 Scikit-image 的功能更為豐富,所以使用起來也更為複雜,主要應用於機器視覺、圖像分析等領域,比如眾所周知的“人臉識別”應用。
Pillow版本支持
Pillow 支持跨平台運行,比如 Windows、Linux、MacOS 等,其最新版本為 Pillow 8.3.2,該版本支持 Python 3.6 及以上的版本(推薦使用)。Pillow 與 Python 支持版本的對照表如下所示:
版本對照表
|
Python版本
|
3.10
|
3.9
|
3.8
|
3.7
|
3.6
|
3.5
|
2.7
|
|
Pillow>=8.3.2
|
支持
|
支持
|
支持
|
支持
|
支持
|
|
|
|
Pillow8.0-8.3.1
|
|
支持
|
支持
|
支持
|
支持
|
|
|
|
Pillow7.0-7.2
|
|
|
支持
|
支持
|
支持
|
支持
|
|
|
Pillow6.2.1-6.22
|
|
|
支持
|
支持
|
支持
|
支持
|
支持
|
|
Pillow6..0-6.2.0
|
|
|
|
支持
|
支持
|
支持
|
支持
|
Pillow庫特點
Pillow 庫作為圖像處理的常用庫,主要有以下三大特點:
1) 支持廣泛的文件格式
Pillow 支持廣泛的圖像格式,比如 "jpeg","png","bmp","gif","ppm","tiff" 等。同時,它也支持圖像格式之間的相互轉換。總之, Pillow 幾乎能夠處理任何格式的圖像。
2) 提供了豐富的功能
Pillow 提供了豐富的圖像處理功能,可概括為兩個方面:
- 圖像歸檔
- 圖像處理
圖像歸檔,包括創建縮略圖、生成預覽圖像、圖像批量處理等;而圖像處理,則包括調整圖像大小、裁剪圖像、像素點處理、添加濾鏡、圖像顏色處理等。
3) 配合GUI工具使用
Pillow 庫可以配合 Python GUI(圖形用户界面)工具 Tkinter 一起使用。
除上述特點之外,Pillow 庫還能實現一些較為複雜的圖像處理操作,比如給圖像添加水印、合成 GIF 動態效果圖等等。