規則性のある名前をした複数の、あるいは大量の画像ファイル群があるとする。これをトリミングしていく。シェルスクリプトみたいなことが出来る。まずはそれぞれの基本操作。

PILで画像を読み込んでトリミング

PIL=Python Imaging Libraryをpipなどでインストールしておく。

import PIL.Image as im

image = im.open('filename.png')
trimmed = image.crop((0,0,1200,800))
trimmed.save('output/filename.png')

規則性のあるファイル名を生成

C言語のprintf的な。ていうか同じです。パーセントでフォーマットできます。便利。

for i in range(100):
    print('filename_%04d.png' % (i+1))

複数ファイルをトリミング

import PIL.Image as im
for i in range(100):
    filename = 'filename_%04d.png' % (i+1)
    image = im.open(filename)
    trimmed = image.crop((0,0,1200,800))
    trimmed.save('output/'+filename)

簡単ですね。分けて説明した意味ないですね。ついでにリネームもするバージョンが以下。何をしていたんでしょうねぇ。

import os
import PIL.Image as im
for i in range(100):
    filename1 = 'filename_%02d.png' % (i+1)
    filename2 = 'filename_%04d.png' % (i+1)
    os.rename(filename1, filename2)
    image = im.open(filename2)
    trimmed = image.crop((0,0,1200,800))
    trimmed.save('output/'+filename2)

結論

Pythonはほとんどシェルスクリプト。シェルスクリプトそんなに使ったことないけど。まあなんでもできるよね。requestsとかでネットワーク上の画像とか広い始めるとさらに便利。

Previous Post Next Post