興味の源泉

自分が興味を起こせるようなネタを雑多に書き綴るブログ

【Python】画像の切り抜き・貼り付け

今回はPythonで画像の切り抜きや貼り付けの操作について書きます。

環境 Windows10、Python3.7.6

f:id:nanami_yamato:20200331212255j:plain

画像はこのカレーの画像を使っていきます。 美味しそうですよね。実際美味しかった。

モジュールインポート

from PIL import Image

Pillowモジュールを使います。

もしモジュールがインストールされていない場合はインストールはpipで行います。

pip install pillow

画像の読み込み

test_im = Image.open('IMG_2986.png')

ファイル名を指定してopen関数で読み込めます。

pngやjpgなどに対応しています。

画像の切り抜き

cropped_im = test_im.crop((250, 600, 450, 900))
cropped_im.save('cropped.png')

crop関数で範囲を指定して切り抜きます。

save関数でファイル名を指定して保存します。

f:id:nanami_yamato:20200401211910p:plain

画像のコピー

copy_im = test_im.copy()

copy関数でopenで取得した画像をコピーできます。

画像の貼り付け

copy_im.paste(cropped_im, (0, 0))
copy_im.paste(cropped_im, (250, 300))
copy_im.save('pasted.png');

paste関数で別の画像を貼り付けることができます。

f:id:nanami_yamato:20200401211935j:plain

テストコード

画像を読み込み、切り抜きしたファイルとそれを元の画像に貼り付けたものを別名で保存。

切り抜いた画像を指定回数貼り付けます。

from PIL import Image

test_im = Image.open('IMG_2986.jpg')

# 切り抜き
cropped_im = test_im.crop((250, 600, 450, 900))
cropped_im.save('cropped.png')

copy_im = test_im.copy()
copy_im.paste(cropped_im, (0, 0))
copy_im.paste(cropped_im, (250, 300))
copy_im.save('pasted.png');

# 切り抜いた画像を指定回数貼り付け
width, height = cropped_im.size
width_count = 5
height_count = 4
new_im = Image.new('RGBA', (width * width_count, height * height_count), 'white')
for x_idx in range(width_count):
    for y_idx in range(height_count):
       new_im.paste(cropped_im, (x_idx * width, y_idx * height))
new_im.save('paste_continue.png')

f:id:nanami_yamato:20200401212315p:plain

まとめ

なんか飯テロ記事になってる気がしなくもないですが、 画像を切り貼り簡単にできるので大量に処理する場合はよさそうです。