【python勉強中】」タグアーカイブ

【Python】画像の大きさを変更する

from PIL import Image
import os
from pathlib import Path
import math  # 追加: mathモジュールをimport


# 対象のフォルダパス
folder_path = Path(__file__).resolve().parent

# 出力フォルダ名
output_folder = "Resize"

# 出力フォルダのパスを生成
output_folder_path = os.path.join(folder_path, output_folder)

# 出力フォルダが存在しなければ新規作成
if not os.path.exists(output_folder_path):
    os.makedirs(output_folder_path)

# フォルダ内のファイルを取得
files = os.listdir(folder_path)

for file in files:
    # 拡張子がwebp、jpg、pngの画像ファイルのみ処理する
    if file.endswith(".webp") or file.endswith(".jpg") or file.endswith(".png"):
        # 画像のフルパスを生成
        file_path = os.path.join(folder_path, file)

        # 画像を開く
        image = Image.open(file_path)

        # 画像の長辺を取得
        max_size = max(image.size)

        # 画像の縦横比を保持したまま長辺を768ピクセルにリサイズ
        if max_size > 768:
            ratio = 768 / max_size
            new_width = math.ceil(image.width * ratio)  # 切り上げで新しい幅を計算
            new_height = math.ceil(image.height * ratio)  # 切り上げで新しい高さを計算
            image = image.resize((new_width, new_height), Image.ANTIALIAS)
            # 出力ファイル名を生成(拡張子をpngに変更)
            output_file = os.path.splitext(file)[0] + ".png"

        # 画像をPNG形式で保存
        output_path = os.path.join(output_folder_path, output_file)
        image.save(output_path, "PNG")
        print(f"{file} を {output_file} にリサイズして保存しました。")

        # 元のファイルを削除する場合は以下のコメントを外す
        #os.remove(file_path)

長辺基準で指定サイズにリサイズ(縦横比はそのまま)してResizeフォルダに移動