CodeGym /課程 /Python SELF TW /更改圖片尺寸

更改圖片尺寸

Python SELF TW
等級 45 , 課堂 1
開放

1. 上傳與保存圖片

在Pillow中使用 Image 類來上傳圖片。上傳後可對圖片進行轉換並保存為不同格式。我們來看一下圖片上傳和保存的主要操作。

上傳圖片

要上傳圖片,使用方法 Image.open()。它允許打開任何支持的圖片格式。

Python

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() 允許設置輸出檔案的名稱和格式。

Python

# 保存為不同格式的圖片
image.save("example.png")  # 保存為PNG格式

您還可以更改保存圖片的質量以減少檔案大小,這對於JPEG格式的圖片特別有用。

Python

# 保存並更改質量
image.save("compressed_example.jpg", quality=85)  # quality值範圍從 1 到 95

2. 調整圖片尺寸

調整尺寸是處理圖片時最常見的任務之一。Pillow提供了幾種調整尺寸的方法,包括設定具體的寬度和高度、等比例調整和創建縮略圖。

使用 resize() 方法調整尺寸

方法 resize() 允許指定圖片的確切尺寸(寬和高),但如果新尺寸未保持原始比例,圖片可能會失真。

Python

# 設置新尺寸
new_size = (800, 600)
resized_image = image.resize(new_size)

# 保存調整後的圖片
resized_image.save("resized_example.jpg")

在此範例中,圖片被調整到800x600像素的尺寸並保存為新檔案。如果原始圖片有其他比例,則會拉伸或壓縮以符合新尺寸。

使用 thumbnail() 等比例調整尺寸

若要調整圖片尺寸並保持其原始比例,請使用方法 thumbnail()。此方法會自動縮小圖片,使其符合指定的尺寸,同時保持原始比例。這對 創建縮略圖 特別有用。

Python

# 創建最大尺寸為400x400像素的縮略圖
image.thumbnail((400, 400))

# 保存縮略圖
image.save("thumbnail_example.jpg")

方法 thumbnail() 直接修改原圖片對象,這表示變更會發生在原始 image 對象上。 使用 thumbnail() 後,Pillow會根據所設定的最大尺寸調整圖片,使其不超過400x400像素並保持比例。

使用 ImageOps.fit() 等比例裁剪與調整大小

有時需要調整圖片的尺寸,使其精確符合指定尺寸,但同時保留比例,並裁剪掉多餘部分。在這種情況下可以使用方法 ImageOps.fit()

Python

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. 完整程式碼範例

以下是包含所有學到的方法的範例程式碼——從上傳到調整尺寸和保存圖片。

Python

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")

尺寸調整方法說明

  1. resize(): 可設置任意尺寸,但若新尺寸與原比例不一致,可能會導致失真。
  2. thumbnail(): 調整圖片尺寸,同時保留比例。適用於創建縮略圖和縮小大圖片。
  3. ImageOps.fit(): 將圖片縮放到指定尺寸並裁剪邊緣。適用於需要與指定尺寸完全對齊而不失真的情況。

4. 建議:

調整圖片尺寸的實際應用

  1. 為網站圖片優化: 過大的圖片會減慢頁面的加載速度,因此減小圖片尺寸但不損失質量很重要。
  2. 為相簿創建縮略圖: 使用 thumbnail() 快速創建縮略圖,可用於顯示預覽。
  3. 將圖片調整為特定尺寸: 當需要將圖片調整為固定尺寸(例如頭像或用戶資料),方法 ImageOps.fit() 可裁剪並縮放圖片以符合這些要求。

選擇方法的建議

當需要準確指定圖片的寬度和高度且不在意比例時,使用 resize()

若想縮小圖片並保持其比例,請使用 thumbnail()

當需要特定尺寸的圖片且不能失真時,使用 ImageOps.fit()。此方法會裁剪多餘部分,非常適合將圖片調整為所需的邊框尺寸。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION