見出し画像

【画像処理】画像リサイズツール サンプルコード

・業務効率化には何すればいいのかな?
・Pythonで自動化ツールを作成できると聞くけど、具体的に何が作れるの?
・自動化のアイデアが出てこない

こんな悩みを抱えている人に向けて、Pythonで作れる自動化ツールを紹介しています。

画像処理のツールについて、こちらの記事で紹介しています。
 ⇒【画像・音声・動画】Pythonで作れる自動化ツールの具体例アイデア13選【業務効率化】

本記事では、画像リサイズツールのサンプルコードを公開しています。

自分で作成するのが難しい方や、ツール作成の手間を減らしたい方にお勧めです。ぜひご活用ください。

【関連記事】
【業務効率化】Pythonで作れる自動化ツール具体例・アイデア53選!
【Pythonで業務効率化】自動化ツールを自作する方法を5STEPで解説!



アイデア「画像リサイズツール」

概要

指定したフォルダ内のすべての画像ファイルのサイズを一括で変更します。

導入メリット

大量の画像ファイルのサイズ変更作業を自動化し、時間を大幅に節約できます。

ツール機能

ユーザーが指定した解像度やパーセンテージに基づいて、フォルダ内の画像サイズを一括で調整します。

必要技術

Pillow:画像の読み込み、サイズ変更、保存を行う

処理フロー

  1. 対象のフォルダとサイズ変更の条件をユーザーから入力受け取り

  2. フォルダ内の画像ファイルを一覧化

  3. 各画像ファイルに対してサイズ変更を実行

  4. サイズ変更後の画像を元の場所に保存または新しいフォルダに保存

  5. 処理の完了をユーザーに通知


注意事項

著作権について

本ソースコードの著作権は、販売者に帰属します。
修正や改変は自由に行えますが、無断での複製、配布は法律で禁止されています。

ライセンスについて

本ソースコードは、個人利用及び商用利用が可能です。ただし、再販売や、本ソースコードを基にした派生作品の販売は禁止します。

返金について

デジタルコンテンツの性質上、購入後の返品や返金は原則として受け付けておりません。

使用上の免責事項

本ソースコードは予告なく変更や修正を行う場合があります。
本ソースコードの動作を保証するものではありません。
本ソースコードの使用から生じたいかなる直接的または間接的な損害に対しても、販売者は責任を負いません。
動作の不具合については、購入者自身の責任で対処してください。

サポートについて

本ソースコードに関するサポートは行っておりません。バグ報告や質問への対応は致しかねます。


ソースコード

import os
from PIL import Image


def resize_images(folder_path, output_folder, width=None, height=None, scale=None):
    """
    指定されたフォルダ内の画像のサイズを変更します。

    :param folder_path: 画像が含まれているフォルダのパス
    :param output_folder: リサイズ後の画像を保存するフォルダのパス
    :param width: 新しい幅(整数)
    :param height: 新しい高さ(整数)
    :param scale: 画像のサイズ変更率(小数)
    """
    # 出力フォルダが存在しない場合は作成
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # フォルダ内の全ファイルをリストアップ
    for file_name in os.listdir(folder_path):
        if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            # 画像ファイルのパスを構築
            img_path = os.path.join(folder_path, file_name)
            # 画像を開く
            with Image.open(img_path) as img:
                # サイズを計算
                if scale is not None:
                    width = int(img.width * scale)
                    height = int(img.height * scale)
                elif width is None or height is None:
                    raise ValueError("幅または高さが未指定です。")
                # 画像をリサイズ
                img = img.resize((width, height), Image.Resampling.LANCZOS)  # 修正部分
                # リサイズした画像を保存
                img.save(os.path.join(output_folder, file_name))
                print(f"{file_name} をリサイズして保存しました。")
def main():
    folder_path = input("画像が保存されているフォルダのパスを入力してください: ")
    output_folder = input("リサイズ後の画像を保存するフォルダのパスを入力してください: ")
    width = input("画像の新しい幅を入力してください(オプション、未入力ならばスケールに従う): ")
    height = input("画像の新しい高さを入力してください(オプション、未入力ならばスケールに従う): ")
    scale = input("サイズ変更のスケールを入力してください(オプション、未入力ならば幅と高さに従う): ")

    # 入力値の型変換
    width = int(width) if width else None
    height = int(height) if height else None
    scale = float(scale) if scale else None

    resize_images(folder_path, output_folder, width, height, scale)

if __name__ == "__main__":
    main()

最後まで読んでいただき、ありがとうございました!
参考のなったと思っていただけたら、
♡スキを押していただけると嬉しいです。

今後もサンプルコードを紹介する予定なので、
関心のある方は是非アカウントのフォローをお願いします!

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