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

Python
スポンサーリンク

では 「pathlib + Pillow」で画像を一括形式変換する実践例 を紹介します。例えば「PNGを全部JPGに変換したい」といったときに役立ちます。


必要な準備

  • Pillow をインストール pip install pillow

サンプルコード:PNG → JPG に一括変換

from pathlib import Path
from PIL import Image

# 入力フォルダと出力フォルダを指定
input_dir = Path.home() / "Pictures" / "png_images"
output_dir = Path.home() / "Pictures" / "jpg_images"

# 出力フォルダがなければ作成
output_dir.mkdir(exist_ok=True)

# PNGファイルをすべて処理
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")

        # 出力ファイル名を .jpg に変更
        save_path = output_dir / (img_path.stem + ".jpg")

        # JPEG形式で保存
        img.save(save_path, "JPEG")
        print(f"変換完了: {save_path}")
Python

コードのポイント

  • img_path.stem は拡張子を除いたファイル名を取得
    例: sample.png"sample"
  • img.convert("RGB") は透過PNGをJPEGに変換する際に必要(JPEGは透過をサポートしないため)
  • 出力フォルダを mkdir(exist_ok=True) で自動作成

実行イメージ

  • 入力フォルダ: ~/Pictures/png_images photo1.png photo2.png
  • 出力フォルダ: ~/Pictures/jpg_images photo1.jpg photo2.jpg

応用例

  • JPG → PNG for img_path in input_dir.glob("*.jpg"): with Image.open(img_path) as img: save_path = output_dir / (img_path.stem + ".png") img.save(save_path, "PNG")
  • すべての画像を 同じ形式に統一(例: Web用に全部JPEG化)

まとめ

  • pathlib でパス操作をシンプルに
  • Pillow で画像を開いて形式変換
  • 一括処理で大量の画像を一気に変換できる

次のステップとしては、「一括形式変換 + リサイズ」を組み合わせて「Web用に軽量化」するスクリプトを作ると、実用度がさらに高まります。

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