尝试将jpgs序列转换为gif时出错。似乎无法弄清楚如何添加调色板,或者这是否是实际问题。能够使用images2gif.py main中的numpy数组加载GIF。
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
不确定如何为这些jpgs指定调色板。文件不清楚,甚至不确定这是不是问题。帮助
答案 0 :(得分:27)
在images2gif.py中更改第200行:
for im in images:
palettes.append( getheader(im)[1] )
到
for im in images:
palettes.append(im.palette.getdata()[1])
答案 1 :(得分:3)
images2gif作者似乎愿意放弃对枕头的支持。见这个主题:
https://code.google.com/p/visvis/issues/detail?id=81
从这个帖子中,我发现了该脚本的固定版本,它适用于我(使用枕头2.4)。它可以在这里: https://github.com/rec/echomesh/blob/master/code/python/external/images2gif.py并使用任何类型的PNG(也是P模式)生成高质量的gif
答案 2 :(得分:1)
images2gif.py使用PIL.GifImagePlugin中的getheader函数来获取调色板。
出于某种原因,它不适用于您阅读的图像。如果源图像不是“P”模式,则脚本可能无法正常工作。
答案 3 :(得分:0)
我在Pillow之后安装了PIL,它开始工作了。看起来像某些原因需要两个库。以下是重新安装两者的方法:
pip uninstall PIL
pip uninstall Pillow
pip install Pillow
pip install PIL