python imaging library - imsave - Error en images2gif.py con GlobalPalette
imageio imsave (4)
Obteniendo un error al intentar convertir la secuencia de jpgs a gifs. Parece que no puedo imaginar cómo agregar una paleta, o si ese es el problema real. Pude obtener gifs para cargar usando las matrices numpy en la images2gif.py principal images2gif.py .
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 esto me sale el siguiente error:
"images2gif.py", line 436, in writeGifToFile
fp.write(globalPalette)
TypeError: must be string or buffer, not None
No estoy seguro de cómo especificar una paleta para estos jpgs. La documentación no está clara para mí, y ni siquiera estoy seguro de si ese es el problema. ¿ayuda?
El autor de images2gif parece estar dispuesto a dejar de lado la almohada. Ver este hilo:
https://code.google.com/p/visvis/issues/detail?id=81
También en este hilo, encontré una versión fija de ese script, que funciona conmigo (con la almohada 2.4). Está disponible aquí: https://github.com/rec/echomesh/blob/master/code/python/external/images2gif.py y produce gif de buena calidad con cualquier tipo de PNG (modo P también)
En images2gif.py cambiar la línea 200:
for im in images:
palettes.append( getheader(im)[1] )
a
for im in images:
palettes.append(im.palette.getdata()[1])
Instalé PIL después de Pillow y comenzó a funcionar. Parece que ambas bibliotecas son necesarias por alguna razón. Aquí es cómo reinstalar ambos:
pip uninstall PIL
pip uninstall Pillow
pip install Pillow
pip install PIL
images2gif.py usa la función getheader de PIL.GifImagePlugin para obtener las paletas.
Por alguna razón, no funciona con la imagen que lees. Tal vez el script no funcione realmente si las imágenes de origen no están en modo ''P''.