CodeGym /Adesua ahorow /Python SELF TW /格式管理與轉換

格式管理與轉換

Python SELF TW
等級 46 , 課堂 2
開放

1. 確定圖片格式

支援的圖片格式

Pillow 支援多種圖片格式,包括:

  • JPEG (JPG): 最受歡迎的相片格式之一。壓縮圖片時會導致品質損失,但能大幅減少檔案大小。不支援透明功能。
  • PNG: 無損格式,支援透明度(alpha 通道),適合用於商標、圖標,或需要高清晰度的圖片。
  • BMP: 高品質無壓縮格式,但檔案大小很大。支援透明功能。
  • TIFF: 無損格式,常用於印刷領域中保存高品質圖像。
  • WEBP: 現代格式,具高壓縮效率且支援透明功能,適合用於網頁圖片,能在保留良好品質的同時提供較小的檔案大小。

載入圖片以進行轉換

在轉換圖片之前,可以用 Image.open() 方法載入圖片。

Python

from PIL import Image

# 開啟圖片檔
image = Image.open("example.jpg")
print(image.format)  # 檢查圖片的原始格式

2. 將圖片轉換為其他格式

可以使用 save() 方法來儲存圖片為不同的格式,只需改變檔案名稱的副檔名或明確指定格式。

從 JPEG 轉換為 PNG

若要將圖片從 JPEG 轉換為 PNG,只需在儲存文件時指定新副檔名即可:

Python

# 儲存圖片為 PNG 格式
image.save("example_converted.png")

此程式碼將會把圖片從 JPEG 格式轉換為 PNG 格式,並使用所指定的檔案名稱儲存。PNG 非常適合保存無損圖片,並支援透明區域。

從 PNG 轉換為 JPEG

也可以將圖片從 PNG 轉換為 JPEG,但需要注意的是,JPEG 不支援透明度。在轉換過程中,透明區域將會被填充為白色。

Python

# 將 PNG 轉換為 JPEG(透明部分將被填充為白色背景)
image = image.convert("RGB")  # 切換到 JPEG 所需的 RGB 模式
image.save("example_converted.jpg", "JPEG")

方法 convert("RGB") 被用來將圖片轉換為 RGB 模式,因為 JPEG 不支援透明區域。這是轉換為 JPEG 格式時必須的步驟。

3. 圖片品質管理

Pillow 提供 qualityoptimize 等參數,允許控制圖片品質和檔案大小。這些參數對於 JPEG 和 PNG 特別有用。

JPEG 的最佳化與品質控制

當儲存圖片為 JPEG 格式時,參數 quality 用於調整壓縮程度。品質值越高,檔案大小越大,圖片品質也越高。quality 值的範圍為 1 到 95(默認為 75)。

Python

# 儲存壓縮品質降低的 JPEG 圖片
image.save("example_compressed.jpg", "JPEG", quality=85)

此程式碼以品質值 85 儲存圖片,通常可保留良好品質,同時減小檔案大小。如果需要更低品質,可用於縮略圖生成,比如 quality = 50

PNG 的最佳化

對於 PNG,參數 optimize = True 支援無損壓縮,除去多餘數據。這在針對網路發布圖片時特別有用。

Python

# 儲存最佳化 PNG 圖片
image.save("example_optimized.png", "PNG", optimize=True)

最佳化 PNG 有助於減小檔案大小而不損失品質,對於如標誌和圖標等每一 KB 都很關鍵的場景特別重要。

JPEG 不同壓縮級別品質比較

我們來看一下改變 quality 參數如何影響檔案大小及圖片品質。

Python

# 儲存不同品質的 JPEG 圖片
image.save("quality_95.jpg", "JPEG", quality=95)
image.save("quality_75.jpg", "JPEG", quality=75)
image.save("quality_50.jpg", "JPEG", quality=50)

在這個範例中,我們用三種品質(95、75 和 50)儲存了同一張圖片。品質 95 的圖片幾乎與原始圖一樣,但檔案較大;而品質 50 的圖片壓縮明顯,細節可能有所損失。

4. 使用 WebP 格式

WebP 是現代格式,支援有損與無損壓縮以及透明度。因為它的高壓縮比例,WebP 被廣泛用於互聯網中。

將圖片轉換為 WebP 格式

Python

# 轉換圖片為 WebP 格式
image.save("example.webp", "WEBP", quality=80)

此範例以品質值 80 儲存圖片為 WebP 格式。相比 JPEG 或 PNG,WebP 格式能在保留相似品質的情況下,顯著減小檔案大小。

完整轉換與最佳化範例

現在我們結合以上方法,創建一個將圖片轉換為多種格式並進行最佳化的腳本。

Python

from PIL import Image

# 開啟圖片檔
image = Image.open("example.jpg")

# 轉換為最佳化的 PNG
image.save("converted_optimized.png", "PNG", optimize=True)

# 將圖片儲存為壓縮品質較低的 JPEG
image_rgb = image.convert("RGB")  # 切換到 JPEG 所需的 RGB 模式
image_rgb.save("converted_compressed.jpg", "JPEG", quality=85)

# 儲存 WebP 格式並最佳化品質
image_rgb.save("converted_optimized.webp", "WEBP", quality=80)

在這裡:

  • 我們將圖片轉換為經最佳化的 PNG,這有助於無損地減小檔案大小。
  • 將圖片儲存為 JPEG 格式,品質為 85,以保證良好的品質與較小檔案大小。
  • 將圖片轉換為 WebP 格式,這非常適合用於網路發布,既保留高清品質,又能大大減小檔案大小。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION