Python:画像を縦に分割するスクリプト
Photo by anniespratt on Unsplash

Python:画像を縦に分割するスクリプト

    ※この原稿の内容は、PythonのコードをWindows PCを使って検証していますので、あらかじめご了承ください。

    Pythonを使って画像を加工する方法を学びたい方に向けて、簡単なスクリプトを紹介します。今回作成するのは、画像を縦に分割するプログラムです。このスクリプトを理解すれば、PIL(Pillow)ライブラリやPathlibの基本的な使い方を学ぶことができます。


    今回のスクリプトは、指定したフォルダ内の画像(PNG・JPG)を指定した回数で縦に分割し、分割した画像を別のフォルダに保存するものです。

    実行の流れ

    1. 分割数を指定

    2. 画像フォルダを設定(入力フォルダ、出力フォルダ)

    3. 画像を1枚ずつ読み込む

    4. 画像を指定した回数で縦に分割

    5. 分割後の画像を保存

    6. 完了メッセージを表示


    このスクリプトを実行するには、以下の環境が必要です。

    • Python 3.x

    • Pillow(画像処理用ライブラリ)

    Pillowがインストールされていない場合は、以下のコマンドでインストールできます。

    pip install Pillow

    では、実際のコードを見ながら解説していきます。

    from pathlib import Path
    from PIL import Image
    from itertools import chain  # 複数の画像フォーマットを取得するために使用
    
    # 設定:縦に何分割するか
    NUM_SPLITS = 2  # ← ここを変更すれば分割数を変更可能
    
    # フォルダ設定
    input_folder = Path(r"C:\image_div\before")
    output_folder = Path(r"C:\image_div\after")
    output_folder.mkdir(exist_ok=True)  # 出力フォルダがなければ作成
    
    # 画像ファイルを取得(PNGとJPG)
    image_files = chain(input_folder.glob("*.png"), input_folder.glob("*.jpg"))
    
    for image_path in image_files:
        img = Image.open(image_path)  # 画像を開く
        width, height = img.size  # 画像のサイズを取得
        split_height = height // NUM_SPLITS  # 1つの分割画像の高さを計算
    
        for i in range(NUM_SPLITS):
            box = (0, i * split_height, width, (i + 1) * split_height)  # 分割の座標を設定
            split_img = img.crop(box)  # 画像を分割
            output_path = output_folder / f"{image_path.stem}_part{i+1}{image_path.suffix}"  # 出力パスを設定
            split_img.save(output_path)  # 分割画像を保存
    
    print("処理完了!")
    from pathlib import Path
    from PIL import Image
    from itertools import chain
    • Pathlib を使ってフォルダのパスを管理

    • PillowImage を使って画像を処理

    • itertools.chain() を使って PNG と JPG の両方を対象に

    NUM_SPLITS = 2
    • 画像を 何分割するか を指定(ここでは2分割)

    input_folder = Path(r"C:\image_div\before")
    output_folder = Path(r"C:\image_div\after")
    output_folder.mkdir(exist_ok=True)
    • input_folder には分割する画像を入れたフォルダ

    • output_folder には分割後の画像を保存するフォルダ

    • mkdir(exist_ok=True)フォルダがなければ作成

    image_files = chain(input_folder.glob("*.png"), input_folder.glob("*.jpg"))
    • glob("*.png")glob("*.jpg")PNG・JPG の両方を取得

    • chain() でまとめて処理できるようにする

    for image_path in image_files:
        img = Image.open(image_path)
        width, height = img.size
        split_height = height // NUM_SPLITS
    • 画像を開いて width(幅)と height(高さ)を取得

    • split_height = height // NUM_SPLITS で1つの分割画像の高さを計算

        for i in range(NUM_SPLITS):
            box = (0, i * split_height, width, (i + 1) * split_height)
            split_img = img.crop(box)
            output_path = output_folder / f"{image_path.stem}_part{i+1}{image_path.suffix}"
            split_img.save(output_path)
    • box = (0, i * split_height, width, (i + 1) * split_height) で分割エリアを決める

    • img.crop(box) で指定エリアを切り出し

    • split_img.save(output_path) で保存

    print("処理完了!")
    • 処理がすべて完了したらメッセージを出力


    1. C:\image_div\before に分割したい画像を入れる

    2. コマンドプロンプトを開き、スクリプトのあるフォルダへ移動する(例: cd C:\image_div

    3. 以下のコマンドを実行する

    python image_div.py
    1. C:\image_div\after に分割された画像が出力される


    このスクリプトを通じて、Pythonの画像処理に関する基本を学べました。

    • Pillow を使って画像を開く・切り出す・保存する

    • Pathlib でフォルダの管理を行う

    • itertools.chain() で複数のファイルをまとめて処理する

    Python初心者でも簡単に応用できるので、ぜひ試してみてください!

    アンド,エー株式会社
    facebookTwitterDiscord

    and,a株式会社(and,a Inc. アンド,エー株式会社)

    〒153-0063 東京都目黒区目黒1-4-16 目黒Gビル7階

    Copyright © 2017-2025 and,a Inc. All Rights Reserved.