スポンサーリンク

【Python】指定フォルダ内の画像のサイズ変更

記事内に広告が含まれています。

指定したフォルダに格納されたすべての画像ファイルのサイズを変更するPythonスクリプトを記載します。

以下の3パターンのサイズ指定に対応できるようにしてあります。

  • 縦と横のサイズを指定する。
  • 縦のサイズのみ指定し、縦横比は変えない。
  • 縮小比率のみ指定し、縦横比は変えない。
from PIL import Image
import os

# 変換する画像が格納されているフォルダパス
input_folder = 'input_images/'
# 変換後の画像を保存するフォルダパス
output_folder = 'resized_images/'


# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# リサイズのパターンを選択: 'specific_size', 'height_only', 'scale'
resize_pattern = 'scale'

# リサイズのパラメータ
resize_param_specific_size = (300, 300)  # 例: specific_sizeの場合 (width, height)
resize_param_height_only = 300  # 例: height_onlyの場合 (height)
resize_param_scale = 0.5  # 例: scaleの場合 (例: 0.5は50%縮小)

# 特定のフォルダ内のすべてのファイルに対してループ
for filename in os.listdir(input_folder):
    if filename.endswith(('.png', '.jpg', '.jpeg')):
        img_path = os.path.join(input_folder, filename)
        img = Image.open(img_path)

        if resize_pattern == 'specific_size':
            new_size = resize_param_specific_size
        elif resize_pattern == 'height_only':
            aspect_ratio = img.width / img.height
            new_height = resize_param_height_only
            new_width = int(new_height * aspect_ratio)
            new_size = (new_width, new_height)
        elif resize_pattern == 'scale':
            new_width = int(img.width * resize_param_scale)
            new_height = int(img.height * resize_param_scale)
            new_size = (new_width, new_height)

        # 画像のサイズを変更
        img_resized = img.resize(new_size)

        # 変更後の画像を保存
        output_path = os.path.join(output_folder, filename)
        img_resized.save(output_path)

print('すべての画像のサイズが変更されました。')

このコードでは、resize_pattern変数を使ってリサイズのパターンを指定し、resize_parameters変数で必要なパラメータを設定します。以下のように設定します。

  • resize_pattern = 'specific_size'の場合は、resize_param_specific_size(width, height)の形式で設定して縦と横のサイズを指定します。
  • resize_pattern = 'height_only'の場合は、resize_param_height_onlyに縦のサイズ(例:300)を直接指定します。この設定では縦横比を保持します。
  • resize_pattern = 'scale'の場合は、resize_param_scaleに縮小比率(例:0.5は50%縮小)を設定します。この設定でも縦横比を保持します。

必要に応じて、input_folderoutput_folderresize_pattern、およびresize_parametersの値を変更して使用してください。

なお、動作確認はPython 3.9で行いました。

スポンサーリンク
Python
著者SNS
タイトルとURLをコピーしました