指定したフォルダに格納されたすべての画像ファイルのサイズを変更する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_folder
、output_folder
、resize_pattern
、およびresize_parameters
の値を変更して使用してください。
なお、動作確認はPython 3.9で行いました。