Almohada Python - Secuencias de imágenes

La biblioteca de imágenes de Python (PIL) contiene soporte básico para secuencias de imágenes (formatos de animación). FLI / FLC, GIF y algunos formatos experimentales son los formatos de secuencia admitidos. Los archivos TIFF también pueden contener más de un fotograma.

Al abrir un archivo de secuencia, PIL carga automáticamente el primer fotograma de la secuencia. Para moverse entre diferentes fotogramas, puede utilizar los métodos de búsqueda e información.

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

Salida

raise EOFError
EOFError

Como podemos ver arriba, obtendrá una excepción EOFError cuando finalice la secuencia.

La mayoría de los controladores en la última versión de la biblioteca solo le permiten buscar el siguiente cuadro (como en el ejemplo anterior), para rebobinar el archivo, es posible que deba volver a abrirlo.

Una clase de iterador de secuencia

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