pil庫是python早期用于圖像處理的標準庫,全稱python imaging library,提供圖像打開、修改、保存等功能。現在普遍使用pillow的原因在于原pil項目停止更新,而pillow作為其繼承者持續維護,兼容其api并改進了python 3支持和功能擴展。pillow支持多種圖像格式(如jpeg、png、gif),具備圖像打開與保存、調整大小與裁剪、旋轉與翻轉、濾鏡與增強、繪制圖形與文字等核心功能。pillow與舊版pil相比,具有更好的python 3支持、持續更新、更多格式支持等優勢,但不再完全兼容部分舊特性。使用時需注意圖像路徑、格式支持、內存占用及顏色空間轉換等問題。對于新項目,推薦直接使用pillow,安裝命令為pip install pillow。
PIL庫是Python中一個早期用于圖像處理的標準庫,全稱是Python Imaging Library。它提供了豐富的圖像操作功能,比如打開、修改、保存各種格式的圖片。后來由于原PIL項目更新緩慢,社區出現了它的替代版本Pillow,目前我們常說的PIL其實是Pillow的別名。
什么是PIL庫?為什么現在都用Pillow?
PIL最初由Fredrik Lundh等人開發,是Python圖像處理領域的先驅庫之一。但隨著Python的發展,PIL逐漸停止了官方更新。為了繼續支持和擴展其功能,社區基于PIL創建了Pillow項目。
現在我們在pip安裝時使用的是Pillow包,在代碼中導入時仍可以寫成import PIL,因為Pillow兼容并延續了PIL的API結構。
簡單來說:
立即學習“Python免費學習筆記(深入)”;
- PIL是原始項目名稱
- Pillow是PIL的現代繼承者
- 安裝Pillow后,PIL模塊就可用
PIL/Pillow能做什么?常見圖像處理功能一覽
Pillow支持大部分常見的圖像格式(如JPEG、PNG、GIF等),并且具備基本但強大的圖像處理能力。以下是幾個常用的功能:
- 打開與保存圖像:支持多種格式讀寫,只需一行代碼就能加載圖片。
- 調整大小與裁剪:可以用resize()方法改變尺寸,crop()方法進行區域裁剪。
- 圖像旋轉與翻轉:rotate()控制角度,transpose()實現水平或垂直翻轉。
- 圖像濾鏡與增強:通過ImageFilter模塊應用模糊、邊緣檢測等效果。
- 繪制圖形與文字:結合ImageDraw模塊可在圖片上畫線、矩形或添加文字。
例如,想把一張圖片縮小一半,可以這樣寫:
from PIL import Image img = Image.open('example.jpg') resized_img = img.resize((img.width // 2, img.height // 2)) resized_img.save('resized_example.jpg')
PIL和Pillow有什么區別?選哪個更好?
雖然Pillow是PIL的分支,但它做了不少改進:
- ? 更好的Python 3支持
- ? 持續更新維護
- ? 支持更多圖像格式和功能
- ? 不再完全兼容舊版PIL的所有特性(但大多數都能用)
所以如果你是新手或者新項目,直接使用Pillow更合適。老項目如果還在用PIL,建議遷移到Pillow以獲得更好的兼容性和安全性。
另外注意:Pillow安裝命令是pip install Pillow,而老版PIL已經無法通過pip正常安裝。
使用PIL/Pillow需要注意的地方
在使用過程中,有幾個細節容易被忽略但影響體驗:
- 圖像路徑問題:確保文件路徑正確,否則會拋出FileNotFoundError。
- 格式不支持:某些特殊格式可能需要額外依賴,比如WebP在部分系統下需編解碼庫支持。
- 內存占用高:大圖處理時要注意內存管理,必要時可縮略預覽后再操作。
- 顏色空間轉換:有時需要調用convert()方法切換RGB/RGBA/L等模式才能執行特定操作。
例如,將圖片轉為灰度圖:
gray_img = img.convert('L') # 'L'代表灰度模式
基本上就這些。PIL作為圖像處理的基礎工具,雖然功能不算最強大,但足夠應對很多日常需求。而現在的Pillow讓它煥發了新生,是一個穩定又實用的選擇。