Ответ 1
В строке change2gif.py с картинкой:
for im in images:
palettes.append( getheader(im)[1] )
к
for im in images:
palettes.append(im.palette.getdata()[1])
Получение ошибки при попытке конвертировать последовательность jpgs в gif. Не похоже, чтобы понять, как добавить палитру, или если это актуальная проблема. Была возможность загружать gifs с использованием массивов numpy в images2gif.py main.
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)
С этим я получаю следующую ошибку:
"images2gif.py", line 436, in writeGifToFile
fp.write(globalPalette)
TypeError: must be string or buffer, not None
Не знаете, как указать палитру для этих jpg. документация неясна для меня, и даже не уверен, что это проблема. помочь?
В строке change2gif.py с картинкой:
for im in images:
palettes.append( getheader(im)[1] )
к
for im in images:
palettes.append(im.palette.getdata()[1])
images2gif автор, похоже, готов отказаться от поддержки подушки. Смотрите эту тему:
https://code.google.com/p/visvis/issues/detail?id=81
Из этой темы тоже я нашел исправленную версию этого script, которая работает со мной (с подушкой 2.4). Он доступен здесь: https://github.com/rec/echomesh/blob/master/code/python/external/images2gif.py и создает хорошее качество gif с любым PNG (режим P тоже)
images2gif.py использует функцию getheader из PIL.GifImagePlugin для получения палитр.
По какой-то причине он не работает с изображением, которое вы читаете. Возможно, script не работает, если исходные изображения не являются режимами "P".
Я установил PIL после Pillow, и он начал работать. Похоже, что обе библиотеки нужны по какой-то причине. Вот как переустановить оба:
pip uninstall PIL
pip uninstall Pillow
pip install Pillow
pip install PIL