では 「pathlib + Pillow」で画像を一括形式変換+リサイズ する実践例を紹介します。これを使えば「PNGを全部JPEGに変換しつつ、Web用にサイズを小さくする」といった処理が一気にできます。
必要な準備
pip install pillow
サンプルコード
from pathlib import Path
from PIL import Image
# 入力フォルダと出力フォルダを指定
input_dir = Path.home() / "Pictures" / "originals"
output_dir = Path.home() / "Pictures" / "converted"
# 出力フォルダがなければ作成
output_dir.mkdir(exist_ok=True)
# リサイズ後のサイズ(幅×高さ)
size = (800, 800) # 最大800pxに収まるよう縮小
# PNGファイルをJPEGに変換しつつリサイズ
for img_path in input_dir.glob("*.png"):
with Image.open(img_path) as img:
# RGBA(透過あり)の場合はRGBに変換
if img.mode in ("RGBA", "P"):
img = img.convert("RGB")
# サムネイルを作成(アスペクト比を保ったまま縮小)
img.thumbnail(size)
# 出力ファイル名を .jpg に変更
save_path = output_dir / (img_path.stem + ".jpg")
# JPEG形式で保存(品質を少し落として軽量化)
img.save(save_path, "JPEG", quality=85)
print(f"変換+リサイズ完了: {save_path}")
Pythonコードのポイント
img.thumbnail(size)→ 縦横比を保ったまま縮小img.convert("RGB")→ JPEGに変換するために必要(透過PNG対応)quality=85→ JPEGの圧縮率を調整(数値を下げるとさらに軽量化)img_path.stem→ 拡張子を除いたファイル名を取得
実行イメージ
- 入力フォルダ:
~/Pictures/originalsphoto1.png photo2.png - 出力フォルダ:
~/Pictures/convertedphoto1.jpg (800px以内に縮小) photo2.jpg (800px以内に縮小)
まとめ
pathlibでパス操作をシンプルにPillowで 形式変換+リサイズ を一括処理- Web用の画像軽量化に最適
👉 この応用で「フォルダ内のすべての画像を JPEGに統一してサムネイル化」なんてこともできます。


