Oreiller Python - Séquences d'images

La bibliothèque d'imagerie Python (PIL) contient un support de base pour les séquences d'images (formats d'animation). FLI / FLC, GIF et quelques formats expérimentaux sont les formats de séquence pris en charge. Les fichiers TIFF peuvent également contenir plus d'une image.

En ouvrant un fichier de séquence, PIL charge automatiquement la première image de la séquence. Pour vous déplacer entre différentes images, vous pouvez utiliser les méthodes de recherche et de lecture.

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

Production

raise EOFError
EOFError

Comme nous pouvons le voir ci-dessus, vous obtiendrez une exception EOFError à la fin de la séquence.

La plupart des pilotes de la dernière version de la bibliothèque vous permettent uniquement de rechercher l'image suivante (comme dans l'exemple ci-dessus), pour rembobiner le fichier, vous devrez peut-être le rouvrir.

Une classe d'itérateur de séquence

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