Home >> Blog >> Python PIL 影像處理工具
Python PIL 影像處理工具
Python Imaging Library(PIL 的擴展)是 Python 語言事實上的圖像處理包。它結合了輕量級的圖像處理工具,有助於在處理SEO優化時遇到的影像編輯、創建和保存圖像。對 Python Imaging Library 的支持於 2011 年停止,但一個名為pillow的項目分叉了原始 PIL 項目並為其添加了 Python3.x 支持。Pillow 被宣佈為 PIL 的替代品,以備將來使用。Pillow 支持大量的圖像文件格式,包括 BMP、PNG、JPEG 和 TIFF。該庫鼓勵通過創建新的文件解碼器來添加對庫中更新格式的支持。
這個模塊沒有預裝 Python。因此,要安裝它,請在命令行中執行以下命令:
點安裝pillow
注意:一些 Linux 發行版傾向於預裝 Python 和 PIL。
從pillow開始
1. 使用 open() 打開圖像: PIL.Image.Image 類表示圖像對象。此類提供用於打開圖像的 open() 方法。
示例:假設圖像是:
from PIL import Image
# test.png => location_of_image
img = Image.open(r"test.png")
注意:僅當圖像與 Python 程序位於同一目錄中時,圖像的位置才應是相對的,否則應提供圖像的絕對(完整)路徑。
2.使用show()顯示圖像:該方法用於顯示圖像。為了顯示圖像,Pillow 首先將圖像轉換為 .png 格式(在 Windows 操作系統上)並將其存儲在臨時緩衝區中,然後再顯示它。因此,由於將圖像格式轉換為 .png,原始圖像文件格式的某些屬性可能會丟失(如動畫)。因此,建議僅將此方法用於測試目的。from PIL import Image
from PIL import Image
img = Image.open(r"test.png")
img.show()
3.獲取打開的圖片信息
A) 獲取圖像的模式(顏色模式):圖像的模式屬性告訴了圖像中像素的類型和深度。1 位像素的範圍為 0-1,8 位像素的範圍為 0-255。該模塊提供了不同的模式。其中很少有:
例子:
from PIL import Image
img = Image.open(r"test.png")
print(img.mode)
輸出:
RGBA
注意:請參閱文檔以了解這些模式。
B) 獲取圖像的大小:該屬性提供圖像的大小。它返回一個包含寬度和高度的元組。例子:
from PIL import Image
img = Image.open(r"test.png")
print(img.size)
輸出:
(180, 263)
C) 獲取圖片格式:該方法返回圖片文件的格式。
from PIL import Image
img = Image.open(r"test.png")
print(img.format)T\
輸出:
PNG
4. 使用 rotate() 旋轉圖像:旋轉圖像後,圖像中沒有像素值的部分用黑色填充(對於非 alpha 圖像)和完全透明的像素(對於支持透明度的圖像)
例子:
from PIL import Image
angle = 40
img = Image.open(r"test.png")
r_img = img.rotate(angle)
輸出:
5. 使用 resize() 調整圖像大小:在調整大小的過程中發生插值,因此無論是放大(調整到比原始更高的尺寸)還是縮小(調整到比原始更低的圖像),圖像的質量都會發生變化. 因此 resize() 應該謹慎使用,同時為重採樣參數提供合適的值。
例子:
from PIL import Image
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size)
r_img.show()
輸出:
6. 使用 save() 保存圖像:使用 save() 方法時,Destination_path 還必須具有圖像文件名和擴展名。如果在格式參數中指定了擴展名,則可以在 Destination_path 中省略擴展名。
from PIL import Image
size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size, resample = Image.BILINEAR)
# resized_test.png => Destination_path
r_img.save("resized_test.png")
# Opening the new image
img = Image.open(r"resized_test.png")
print(img.size)
輸出:
(40, 40)