見出し画像

【画像処理】画像トリミングツール サンプルコード

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

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

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

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

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

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



アイデア「画像トリミングツール」

概要

指定したフォルダ内のすべての画像ファイルを一括でトリミングする。

導入メリット

大量の画像ファイルのトリミング作業を自動化し、時間を大幅に節約できます。

ツール機能

ユーザーがサイズに合わせて、フォルダ内の画像サイズを一括でトリミングします。
元画像の中心を基準として、トリミングします。

必要技術

Pillow:画像の読み込み、トリミング、保存を行う

処理フロー

  1. 対象のフォルダとトリミングサイズの条件をユーザーから入力受け取り

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

  3. 画像ファイルの中心を認識

  4. 画像の中心を基準にして、トリミングサイズに合わせてトリミングを実行

  5. トリミング後の画像を新しいフォルダに保存

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



注意事項

著作権について

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

ライセンスについて

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

返金について

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

使用上の免責事項

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

サポートについて

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


ソースコード

from PIL import Image
import os

def trim_images(folder_path, output_folder, trim_size):
    """
    指定されたフォルダ内の画像を中心から指定されたサイズでトリミングし、新しいフォルダに保存する関数。
    
    :param folder_path: 画像が含まれているフォルダのパス
    :param output_folder: リサイズ後の画像を保存するフォルダのパス
    :param trim_size: トリミングするサイズ(幅, 高さ)。
    """
    # 出力フォルダが存在しない場合は作成
    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:
                # 画像の中心を計算
                center_x, center_y = img.width // 2, img.height // 2
                half_trim_width, half_trim_height = trim_size[0] // 2, trim_size[1] // 2
                
                # トリミングする範囲を計算
                left = center_x - half_trim_width
                upper = center_y - half_trim_height
                right = center_x + half_trim_width
                lower = center_y + half_trim_height
                
                # 画像をトリミング
                trimmed_img = img.crop((left, upper, right, lower))
                
                # トリミングした画像を保存
                trimmed_img.save(os.path.join(output_folder, file_name))
                print(f"{file_name} をリサイズして保存しました。")

def main():
    folder_path = input("トリミングする画像があるフォルダのパスを入力してください:")
    output_folder = input("トリミング後の画像を保存するフォルダのパスを入力してください: ")
    width = int(input("トリミングする幅を入力してください:"))
    height = int(input("トリミングする高さを入力してください:"))
    trim_size = (width, height)

    trim_images(folder_path, output_folder, trim_size)

if __name__ == "__main__":
    main()

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

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

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