Использование seek() для создания среднего значения пикселя, сравнивающего программное обеспечение в формате .tiff?

Как PIL обрабатывает функцию seek() для работы с многокадровыми файлами .tiff? Я пытаюсь извлечь часть информации (значения пикселей в оттенках серого) различных кадров в файле, но независимо от того, что я устанавливаю для поиска, возникает ошибка EOFE. Пример кода:

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

Журнал ошибок выглядит так:

Файл "C:\Users\ltopuser\Anaconda2\lib\site-packages\PIL\Image.py", строка 1712, при поиске вызывается EOFError

EOFError

Привет, Джей Джей


person Jericho Jones    schedule 24.07.2016    source источник
comment
Пожалуйста, опубликуйте свой ответ в качестве ответа и примите его, если он отвечает на ваш вопрос.   -  person Dan D.    schedule 24.07.2016


Ответы (1)


Было вызвано тем, что PIL добрался до конца файла: можно исправить следующим образом;

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]
person Jericho Jones    schedule 27.07.2016