規則性のある名前をした複数の、あるいは大量の画像ファイル群があるとする。これをトリミングしていく。シェルスクリプトみたいなことが出来る。まずはそれぞれの基本操作。
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とかでネットワーク上の画像とか広い始めるとさらに便利。