Python Pillow - ลำดับภาพ

Python Imaging Library (PIL) มีการสนับสนุนพื้นฐานบางอย่างสำหรับลำดับภาพ (รูปแบบภาพเคลื่อนไหว) FLI / FLC, GIF และรูปแบบทดลองบางรูปแบบเป็นรูปแบบลำดับที่รองรับ ไฟล์ TIFF สามารถมีได้มากกว่าหนึ่งเฟรมเช่นกัน

การเปิดไฟล์ลำดับ PIL จะโหลดเฟรมแรกในลำดับโดยอัตโนมัติ หากต้องการย้ายไปมาระหว่างเฟรมต่างๆคุณสามารถใช้วิธีการค้นหาและบอก

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