2015-12-17 2 views
1

я следующий вопрос: извлечь различные кадры в формате GIF в нескольких файлах PNG с:пикс [х, у] возвращает целое число вместо (R, G, B, A) Tupel

def extractFrames(inGif, outFolder): 
    frame = Image.open(inGif) 
    nframes = 0 
    while frame: 
     frame.save('%s/%s-%s.png' % (outFolder, os.path.basename(inGif), nframes) , 'PNG') 
     nframes += 1 
     try: 
      frame.seek(nframes) 
     except EOFError: 
      break; 
    return True 

Это работает по назначению. Однако, если я запускаю следующий фрагмент кода:

im = Image.open(item) #item is one of the earlier created PNGs 
pix = im.load() 
for x in range(0,im.size[0]): 
    for y in range(0,im.size[1]): 
     print pix[x,y] 

Выход будет что-то вроде 13 или 3 вместо предполагаемого (255, 255, 255, 255). Как только я открываю файлы в Paint и сохраняю их без изменения чего-либо, скрипт работает нормально и выводит кортеж с (R, G, B, A).

Так что мой вопрос: Почему это и как я могу изменить код, который мне не нужно открывать все изображения вручную, прежде чем запускать вторую часть кода?

Редактировать: Я сначала испробовал все это, извлекая рамку в GIF вместо PNG, с тем же результатом.

ответ

-1

Проверьте формат изображения при открытии. Если изображение палиттировано, добавьте еще один бит, который извлекает цвет из палитры изображений.

Смежные вопросы