1. 上傳與保存圖片
在Pillow中使用 Image 類來上傳圖片。上傳後可對圖片進行轉換並保存為不同格式。我們來看一下圖片上傳和保存的主要操作。
上傳圖片
要上傳圖片,使用方法 Image.open()。它允許打開任何支持的圖片格式。
from PIL import Image
# 打開圖片
image = Image.open("example.jpg")
# 輸出圖片資訊
print(image.format) # 圖片格式,例如:JPEG或PNG
print(image.size) # 圖片大小 (寬, 高)
print(image.mode) # 顏色模式,例如:RGB或Grayscale
此程式碼上傳圖片 example.jpg 並輸出其主要屬性:格式、大小和顏色模式。如果圖片不在同一資料夾中,請提供完整的檔案路徑。
保存圖片
上傳和修改圖片後,您可以將其保存為任何支持的格式,只需在檔名中指定所需的擴展名。方法 save() 允許設置輸出檔案的名稱和格式。
# 保存為不同格式的圖片
image.save("example.png") # 保存為PNG格式
您還可以更改保存圖片的質量以減少檔案大小,這對於JPEG格式的圖片特別有用。
# 保存並更改質量
image.save("compressed_example.jpg", quality=85) # quality值範圍從 1 到 95
2. 調整圖片尺寸
調整尺寸是處理圖片時最常見的任務之一。Pillow提供了幾種調整尺寸的方法,包括設定具體的寬度和高度、等比例調整和創建縮略圖。
使用 resize() 方法調整尺寸
方法 resize() 允許指定圖片的確切尺寸(寬和高),但如果新尺寸未保持原始比例,圖片可能會失真。
# 設置新尺寸
new_size = (800, 600)
resized_image = image.resize(new_size)
# 保存調整後的圖片
resized_image.save("resized_example.jpg")
在此範例中,圖片被調整到800x600像素的尺寸並保存為新檔案。如果原始圖片有其他比例,則會拉伸或壓縮以符合新尺寸。
使用 thumbnail() 等比例調整尺寸
若要調整圖片尺寸並保持其原始比例,請使用方法 thumbnail()。此方法會自動縮小圖片,使其符合指定的尺寸,同時保持原始比例。這對 創建縮略圖 特別有用。
# 創建最大尺寸為400x400像素的縮略圖
image.thumbnail((400, 400))
# 保存縮略圖
image.save("thumbnail_example.jpg")
方法 thumbnail() 直接修改原圖片對象,這表示變更會發生在原始 image 對象上。 使用 thumbnail() 後,Pillow會根據所設定的最大尺寸調整圖片,使其不超過400x400像素並保持比例。
使用 ImageOps.fit() 等比例裁剪與調整大小
有時需要調整圖片的尺寸,使其精確符合指定尺寸,但同時保留比例,並裁剪掉多餘部分。在這種情況下可以使用方法 ImageOps.fit()。
from PIL import ImageOps
# 設置新尺寸
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)
# 保存裁剪後的圖片
fitted_image.save("fitted_example.jpg")
方法 ImageOps.fit() 自動裁剪圖片以符合所提供的尺寸而無任何失真。例如,若原圖是長方形,該方法會裁剪邊緣,將其變成正方形以符合400x400像素的尺寸。
3. 完整程式碼範例
以下是包含所有學到的方法的範例程式碼——從上傳到調整尺寸和保存圖片。
from PIL import Image, ImageOps
# 打開圖片
image = Image.open("example.jpg")
# 調整尺寸但不保留比例
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")
# 等比例縮小圖片
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")
# 裁剪並縮放到所需尺寸
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")
尺寸調整方法說明
-
resize(): 可設置任意尺寸,但若新尺寸與原比例不一致,可能會導致失真。 -
thumbnail(): 調整圖片尺寸,同時保留比例。適用於創建縮略圖和縮小大圖片。 -
ImageOps.fit(): 將圖片縮放到指定尺寸並裁剪邊緣。適用於需要與指定尺寸完全對齊而不失真的情況。
4. 建議:
調整圖片尺寸的實際應用
- 為網站圖片優化: 過大的圖片會減慢頁面的加載速度,因此減小圖片尺寸但不損失質量很重要。
- 為相簿創建縮略圖: 使用
thumbnail()快速創建縮略圖,可用於顯示預覽。 - 將圖片調整為特定尺寸: 當需要將圖片調整為固定尺寸(例如頭像或用戶資料),方法
ImageOps.fit()可裁剪並縮放圖片以符合這些要求。
選擇方法的建議
當需要準確指定圖片的寬度和高度且不在意比例時,使用 resize()。
若想縮小圖片並保持其比例,請使用 thumbnail()。
當需要特定尺寸的圖片且不能失真時,使用 ImageOps.fit()。此方法會裁剪多餘部分,非常適合將圖片調整為所需的邊框尺寸。
GO TO FULL VERSION