Python Pillow 教學
Author: Kelvin Huang Pillow 主要用於圖片讀取、影像處理、輸出的工具,可以把 Pillow 想成是 Photoshop 般的工具,能對圖片做各種編輯。
Pillow 主要功能清單 :
| 功能 |
效果 |
備註 |
| 載入 / 儲存 |
支援影像格式(JPG / PNG / GIF / BMP / TIFF / WebP 等) |
Pillow 支援多種影像格式 |
| 圖像基本屬性 |
取得尺寸 (Size)、格式 (Format)、模式 (Mode) |
img.size, img.format, img.mode |
| 色彩空間轉換 |
模式轉換(例如 RGB 轉灰階 / RGBA / CMYK) |
im.convert("L") 等 |
| 影像調整 |
Resize (縮放) / Rotate (旋轉) / Transpose (翻轉、旋轉) / Crop (裁切) / Paste (貼上) |
im.resize(), im.rotate(), im.transpose(), im.crop(), im.paste() |
| 影像混合 |
Blend (線性混合) / Composite (依遮罩結合) / Alpha_composite (alpha 混合) |
Image.blend(), Image.composite(), Image.alpha_composite() |
| 影像增強 |
對比度 (Contrast) / 亮度 (Brightness) / 顏色 (Color) / 銳利度 (Sharpness) |
使用 ImageEnhance 模組,例如 ImageEnhance.Contrast(im).enhance(factor) |
| 濾鏡效果 |
模糊 (Blur) / 銳化 (Sharpen) / 細節 (Detail) / 輪廓 (Edge_Enhance) / Emboss / Smooth / 等 |
使用 ImageFilter 模組與 im.filter(...) |
| 序列動畫 |
支援多影格圖像 (如 GIF) 、開啟多幀 (seek / tell)、儲存動畫 (save_all 等參數) |
ImageSequence, save(..., save_all=True, append_images=…) |
| 新建畫布 |
Image.new() 創建指定模式與大小的空白影像 |
Image.new(mode, size, color) |
Pillow 主頁 [ https://pillow.readthedocs.io/ ]
Pillow Tutorial [
https://pillow.readthedocs.io/en/stable/handbook/tutorial.html ]
Pillow Image 模組參考 (API) [
https://pillow.readthedocs.io/en/stable/reference/Image.html ]
Python Pillow 使用範例
一、程式目的(ImageDownloader)
此範例是一個使用 Tkinter + Requests + Pillow 撰寫的工具,讓使用者在貼上圖片網址,按下 開始下載 按鈕,將會先
下載圖片並轉存為 PNG 檔案,再使用 Pillow 產生特定尺寸的縮圖,並加上邊框,每次執行將會儲存兩個檔案:
原始PNG:{title}.png / OK縮圖:OK-{title}.png
視窗下方會顯示處理狀態,處理完會自動清空輸入框。
二、使用的主要套件
Tkinter / ttk:建立 GUI(文字輸入框、按鈕、進度條、狀態列、log 區)
threading + queue : 把下載與圖片處理放到背景執行緒,避免 UI 卡住;再用 queue 把訊息安全地丟回 UI 更新
requests:用 HTTP 下載網址內容(圖片)
Pillow:讀取圖片、轉換色彩模式、輸出 PNG、製作縮圖與加邊框
os / re / urlparse:處理路徑、建立資料夾、檔名安全化、從 URL 取檔名

注意!第一次執行時
C:\Users\使用者名稱\PycharmProjects\ImageDownloader\.venv\Scripts\python.exe
C:\Users\使用者名稱\PycharmProjects\ImageDownloader\ImageDownloader.py
Traceback (most recent call last):
File "C:\Users\XXX\PycharmProjects\ImageDownloader\ImageDownloader.py", line 11, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
請按下 import requests 匯入 requests 模組,再次執行。
C:\Users\使用者名稱\PycharmProjects\ImageDownloader\.venv\Scripts\python.exe
C:\Users\使用者名稱\PycharmProjects\ImageDownloader\ImageDownloader.py
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\ImageDownloader\ImageDownloader.py", line 12, in <module>
from PIL import Image, ImageOps
ModuleNotFoundError: Install Package No module named 'PIL'
請再按下 Install Package 安裝 PIL 模組。
Python Pillow 範例原始碼
v0.1 [ ImageDownloader.py ]
[ ImageDownloader.txt ] - 初始版
v0.2 [ ImageDownloader.py ]
[ ImageDownloader.txt ] - 深色主題,修正儲存圖片的檔名問題
Copyright © 2026 CG Digital Corp. All rights reserved.
|