2013-10-03 6 views
16

Errore durante il tentativo di convertire la sequenza di jpg in gif. Non riesco a capire come aggiungere una tavolozza, o se questo è il vero problema. È stato possibile caricare i gif utilizzando gli array numpy nel main images2gif.py.Errore in images2gif.py con GlobalPalette

import PIL 
from PIL import Image 
import StringIO 
import images2gif 

images = [] 
for frame in animation1.frames: 
    img_data = s3manager.get_file_as_string(frame.s3_filename) 
    image = Image.open(StringIO.StringIO(img_data)) 
    images.append(image) 

images2gif.writeGif('lala3.gif', images, duration=0.5, dither=0) 

Con questo ottengo il seguente errore:

"images2gif.py", line 436, in writeGifToFile 
    fp.write(globalPalette) 
TypeError: must be string or buffer, not None 

Non è sicuro come specificare una tavolozza per questi jpgs. documentazione non chiara per me, e nemmeno sicura se questo è il problema. Aiuto?

+0

Hanno lo stesso problema. Ha funzionato per me prima che dovessi reinstallare Pillow perché mancavano alcune delle dipendenze necessarie per lavorare con i file PNG. –

risposta

27

In linea cambiamento images2gif.py 200:

for im in images: 
    palettes.append(getheader(im)[1]) 

a

for im in images: 
    palettes.append(im.palette.getdata()[1]) 
+1

Grazie! Questo ha funzionato per me. – redgem

+4

Questo si verifica sulla linea 426 per me, ho ottenuto la mia versione tramite pip – andrewtatham

+0

Ho usato due png per generare gif, dopo aver apportato queste modifiche, una delle immagini diventa un'immagine a tinta unita. –

1

images2gif.py utilizza la funzione getheader da PIL.GifImagePlugin per ottenere le tavolozze.

Per qualche motivo, non funziona con l'immagine che hai letto. Forse lo script non funziona davvero se le immagini sorgente non sono in modalità "P".

0

Ho installato PIL after Pillow e ha iniziato a funzionare. Sembra che entrambe le librerie siano necessarie per qualche motivo. Ecco come reinstallare entrambi:

pip uninstall PIL 
pip uninstall Pillow 
pip install Pillow 
pip install PIL 
+0

È difficile da credere. PIL e Pillow si installano entrambi con lo stesso nome, PIL - quindi come è possibile che un programma applicativo utilizzi simboli da entrambe le librerie? –

+0

E se questo è vero, allora è un bug grave in Pillow e deve essere rintracciato e segnalato! Il cuscino dovrebbe essere un fork del progetto PIL inattivo - se funziona solo se poi si reinstalla il (vecchio, rotto) PIL, allora qualcosa non va. –