見出し画像

【Python練習-007】フォルダ内の画像ファイルを一括してリサイズ&トリミングするPythonスクリプト

アイキャッチ画像(ヘッダー画像)を用意する時、面倒なのがサイズの変更です。
画像だけなら記事の作成画面でトリミングできるのですが、文字を入れたいときは面倒です。
そこで、またchatGPTや最近使い始めたGithub Copilotに手伝ってもらって作ってみました。

pip install Pillow

pillowライブラリが必要です。


from PIL import Image
import os

# 元の画像があるフォルダと新しいフォルダのパスを指定します
input_folder = "original_images"
output_folder = "resized_images"


# 新しいフォルダを作成します
os.makedirs(output_folder, exist_ok=True)

# 元のフォルダ内の画像ファイルをすべて処理します
for filename in os.listdir(input_folder):
    if filename.endswith((".jpg", ".jpeg", ".png")):
        # 画像を開きます
        img = Image.open(os.path.join(input_folder, filename))
        
        # 画像の幅と高さを取得します
        width, height = img.size
        
        # アスペクト比を計算します
        aspect_ratio = width / height
        
        if aspect_ratio < 1200 / 630:
            # 幅が1200pxにリサイズし、上下をトリミングして高さを630pxにします
            new_width = 1200
            new_height = int(new_width / aspect_ratio)
            img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)
            top = (new_height - 630) / 2
            bottom = new_height - top
            img = img.crop((0, top, new_width, bottom))
        else:
            # 高さが630pxにリサイズし、左右をトリミングして幅を1200pxにします
            new_height = 630
            new_width = int(new_height * aspect_ratio)
            img = img.resize((new_width, new_height), Image.Resampling.LANCZOS)
            left = (new_width - 1200) / 2
            right = new_width - left
            img = img.crop((left, 0, right, new_height))
        
        # 新しいフォルダに保存します
        img.save(os.path.join(output_folder, filename))

# 処理が完了しました
print("画像のリサイズと保存が完了しました。")

original_imagesフォルダの中の画像を一括して1200×630にリサイズ&トリミングしてくれます。
横長の画像だと左右を落として中央部分を、縦長の画像だと上下を落として中央部分を1200×630pxにしてくれます。

最近は、chatGPT のDALL・Eで最初からサイズ指定で画像を生成してもらうこともありますが、美麗なロイヤリティフリー画像もお手軽で良いです。

だいたい、ここでもらってきます。
ただし、サイズが揃っていないので最初から揃えて準備しておくと楽ですね。

このコードはそのうち目的のサイズをリストから選ぶか入力方式にして、フォルダもダイアログから選べるようにしたいと思います。

では🌸

この記事が気に入ったらサポートをしてみませんか?