Python Pillow-이미지 시퀀스

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...