Python | 「pathlib + Pillow」で画像を一括形式変換+リサイズ する実践例

Python
スポンサーリンク

では 「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/originals photo1.png photo2.png
  • 出力フォルダ: ~/Pictures/converted photo1.jpg (800px以内に縮小) photo2.jpg (800px以内に縮小)

まとめ

  • pathlib でパス操作をシンプルに
  • Pillow形式変換+リサイズ を一括処理
  • Web用の画像軽量化に最適

👉 この応用で「フォルダ内のすべての画像を JPEGに統一してサムネイル化」なんてこともできます。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました