【Pythonで写真リサイズ】横幅指定でフォルダ内の画像を自動的に最適化する方法

プログラミング関連

こんにちは、ドンキーです!

今回はPythonを使用して写真のリサイズを行う方法についてご紹介します。

写真をウェブサイトやソーシャルメディアにアップロードする際、

適切なサイズにリサイズすることは重要です。

特に、フォルダ内に大量の写真がある場合は、手動で一つずつ編集するのは非効率的ですよね。

そこで、Pythonの強力な画像処理ライブラリであるPIL(Pillow)を使って、フォルダ内の写真を効率的にリサイズする方法をご紹介します。

この方法では、横幅を指定するだけで、プログラムが自動的にリサイズを行い、フォルダ内のすべての写真を一括で処理することができます。

さあ、手順を追ってみましょう!

以下では、Pythonスクリプトを使用して写真のリサイズを行う方法を詳しく解説します。

横幅指定でフォルダ内の画像を自動的に最適化する方法

具体的なコードがこちらになります。

import os
from PIL import Image

# リサイズする画像が含まれるフォルダのパス
source_folder = input("Enter the path of the source folder: ")

# 横幅のサイズ (ピクセル)
horizontal_size = int(input("Enter the horizontal size (in pixels): "))

# リサイズ後の画像の立幅を計算するための係数
height_coefficient = 2

# フォルダ内のすべてのファイル名を取得
file_names = os.listdir(source_folder)

# フォルダ内の画像を1つずつリサイズして保存
for file_name in file_names:
    # ファイル名が画像の拡張子を持つ場合は、画像をリサイズする
    if file_name.lower().endswith(('.jpg', '.jpeg', '.png', '.gif')):
        # 画像のパスを作成
        source_path = os.path.join(source_folder, file_name)

        # 画像を開いて、立幅と横幅を取得
        with Image.open(source_path) as img:
            width, height = img.size

        # 横幅を固定して、立幅を計算
        if width > horizontal_size:
            # 横幅が指定したサイズよりも大きい場合は縮小する
            new_width = horizontal_size
            new_height = int(height * (horizontal_size / width) / height_coefficient) * height_coefficient
        else:
            # 横幅が指定したサイズ以下の場合は、立幅をそのままにしてリサイズする
            new_width = width
            new_height = height

        # 画像をリサイズして保存
        with Image.open(source_path) as img:
            img_resized = img.resize((new_width, new_height))

            # フォルダを作成して、ファイル名を変更して、保存
            destination_folder = os.path.join(source_folder, "resized_photos")
            os.makedirs(destination_folder, exist_ok=True)
            destination_file_name = os.path.splitext(file_name)[0] + '_resized' + os.path.splitext(file_name)[1]
            destination_path = os.path.join(destination_folder, destination_file_name)
            img_resized.save(destination_path)

このスクリプトの流れについて簡単にまとめると、

1.写真が入っているフォルダを選択する。

2.フォルダに入っている写真の横幅を入力する。

3.フォルダー内の写真が一括リサイズされ新しいフォルダを直下に作成し、そこにリサイズされた写真が保存される。

の流れになっております。

では実際にスクリプトを動かしてみましょう。

まず、コマンドプロンプトを起動してこのスクリプトを選択します。

そうするとフォルダのパスを入力ししてくださいと出ますので、写真が入っているフォルダのパスを入力します。

次に、横幅のサイズを指定してくるので、横幅のサイズをピクセル単位で入力します。

【Pythonで写真リサイズ】横幅指定でフォルダ内の画像を自動的に最適化する方法

そうすると新しいフォルダが出てきて、その中にリサイズされた写真が保存されております。

ちなみに一応ちゃんとリサイズされているかを確認しました。

これがリサイズ前のデータです。

【Pythonで写真リサイズ】横幅指定でフォルダ内の画像を自動的に最適化する方法

これがリサイズ後のデータです。

【Pythonで写真リサイズ】横幅指定でフォルダ内の画像を自動的に最適化する方法

最後に

今回は横幅指定でフォルダ内の画像を自動的に最適化する方法について解説しました。

リサイズのソフトはたくさんありますが、会社などでダウンロードできない場合や、

そもそもpython起動であればデータ容量少なくて済む、などたくさんのメリットがあります。

私の場合のようにブログのサイズを一括指定したい場合でも使えますので、どんどん使ってくださいね。

タイトルとURLをコピーしました