Pythonで画像を分割するやつ

表題の通り、

元画像

↑こんな画像を、こんなふうに分割↓

するやつです。

# -*- coding: utf-8 -*-

# 参考 : https://qiita.com/kino15/items/ece822ec20ad5e80e382

from PIL import Image
import os
import sys
import math

### 各定数の設定
# 縦方向分割数
SPLIT_HEIGHT = 16
# 横方向分割数
SPLIT_WIDTH = 16
# 分割元ファイルパス
ORIGINAL_FILE_PATH = "./cut.png"
# 出力フォルダ名
OUTPUT_PATH = "splitImage"
# ゼロ埋めするか?(するならTrue)
ZFILL_FLAG = True

def ImgSplit(im,w,h):
    # 読み込んだ画像の高さと幅を指定分割数で割る
    height = h / SPLIT_HEIGHT
    width = w / SPLIT_WIDTH

    # 縦の分割枚数
    for h1 in range(SPLIT_HEIGHT):
        # 横の分割枚数
        for w1 in range(SPLIT_WIDTH):
            w2 = w1 * width
            h2 = h1 * height
            print(w2, h2, width + w2, height + h2)
            yield im.crop((w2, h2, width + w2, height + h2))

if __name__ == '__main__':
    # 画像の読み込み
    im = Image.open(ORIGINAL_FILE_PATH)
    w = im.size[0]
    h = im.size[1]
    length = math.log10(SPLIT_HEIGHT * SPLIT_WIDTH) + 1
    os.makedirs(OUTPUT_PATH, exist_ok=True)
    for number, ig in enumerate(ImgSplit(im,w,h), 1):
        # 出力
        if ZFILL_FLAG:
            ig.save(OUTPUT_PATH + "/" + str(number).zfill(int(length)) + ".PNG", "PNG")
        else:
            ig.save(OUTPUT_PATH + "/" + str(number) +".PNG", "PNG")

BoUoWのPython 3.6.3にて動作確認済み。

PIC MAN

ソフトとハードの両方の目線を持てるようになりたいです.

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です