पायथन तकिया - छवि अनुक्रम

पायथन इमेजिंग लाइब्रेरी (पीआईएल) में इमेज सीक्वेंस (एनीमेशन प्रारूप) के लिए कुछ बुनियादी समर्थन शामिल हैं। FLI / FLC, GIF और कुछ प्रयोगात्मक प्रारूप समर्थित अनुक्रम प्रारूप हैं। TIFF फ़ाइलों में एक से अधिक फ़्रेम हो सकते हैं।

एक अनुक्रम फ़ाइल खोलना, पीआईएल स्वचालित रूप से अनुक्रम में पहला फ्रेम लोड करता है। विभिन्न फ़्रेमों के बीच जाने के लिए, आप खोज और विधियों को बता सकते हैं।

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