2016-07-24 41 views
0

Wie behandelt PIL die Funktion seek(), um in Multiframe-TIFF-Dateien zu arbeiten? Ich versuche, eine Information (Graustufen-Pixelwerte) verschiedener Frames in der Datei zu extrahieren, aber unabhängig davon, für was ich die Suche einstelle, wird der EOFE-Fehler ausgelöst. Beispielcode:Verwenden von seek() zum Erstellen eines mittleren Pixelwerts beim Vergleichen von Software im TIFF-Format?

from PIL import Image 
im = Image.open('example_recording.tif').convert('LA') 

width,height = im.size 
image_lookup = 0 
total=0 
for i in range(0,width): 
    for j in range(0,height): 
     total += im.getpixel((i,j))[0] 

total2=0 
im.seek(1) 
for i in range(0,width): 
    for j in range(0,height): 
     total += im.getpixel((i,j))[0] 

print total 
print total2 

Das Fehlerprotokoll wie folgt aussieht:

Datei "C: \ Benutzer \ ltopuser \ Anaconda2 \ lib \ site-packages \ PIL \ Image.py", Zeile 1712, in suchen raise EOFError

EOFError

Cheers, JJ

+1

Bitte posten Sie Ihre Antwort als Antwort und akzeptieren Sie sie, wenn sie Ihre Frage beantwortet. –

Antwort

1

wurde verursacht durch PIL immer der Datei zu beenden: kann wie folgt festgelegt werden;

class ImageSequence: 
def __init__(self, im): 
    self.im = im 
def __getitem__(self, ix): 
    try: 
     if ix: 
      self.im.seek(ix) 
     return self.im 
    except EOFError: 
     raise IndexError # this is the end of sequence 

for frame in ImageSequence(im): 
for i in range(0,width): 
    for j in range(0,height): 
     total += im.getpixel((i,j))[0]