PythonPillow-画像シーケンス
Python Imaging Library(PIL)には、画像シーケンス(アニメーション形式)の基本的なサポートがいくつか含まれています。FLI / FLC、GIF、およびいくつかの実験形式がサポートされているシーケンス形式です。TIFFファイルには複数のフレームを含めることもできます。
シーケンスファイルを開くと、PILはシーケンスの最初のフレームを自動的にロードします。異なるフレーム間を移動するには、seekメソッドとtellメソッドを使用できます。
from PIL import Image
img = Image.open('bird.jpg')
#Skip to the second frame
img.seek(1)
try:
while 1:
img.seek(img.tell() + 1)
#do_something to img
except EOFError:
#End of sequence
pass
出力
raise EOFError
EOFError
上記のように、シーケンスが終了するとEOFError例外が発生します。
最新バージョンのライブラリのほとんどのドライバーでは、(上記の例のように)次のフレームをシークすることしかできません。ファイルを巻き戻すには、ファイルを再度開く必要がある場合があります。
シーケンスイテレータクラス
class ImageSequence:
def __init__(self, img):
self.img = img
def __getitem__(self, ix):
try:
if ix:
self.img.seek(ix)
return self.img
except EOFError:
raise IndexError # end of sequence
for frame in ImageSequence(img):
# ...do something to frame...