16

尝试将 jpg 序列转换为 gif 时出错。似乎无法弄清楚如何添加调色板,或者这是否是实际问题。能够使用images2gif.py主文件中的 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

不知道如何为这些 jpg 指定调色板。我不清楚文档,甚至不确定这是否是问题所在。帮助?

4

4 回答 4

26

在 images2gif.py 更改第 200 行:

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

for im in images:
    palettes.append(im.palette.getdata()[1])
于 2014-04-08T20:43:00.747 回答
2

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

于 2014-07-01T16:15:02.017 回答
1

images2gif.py 使用 PIL.GifImagePlugin 中的 getheader 函数来获取调色板。

出于某种原因,它不适用于您阅读的图像。如果源图像不是“P”模式,则脚本可能无法正常工作。

于 2013-10-03T09:34:28.587 回答
0

我在 Pillow 之后安装了 PIL,它开始工作了。似乎出于某种原因需要这两个库。以下是如何重新安装两者:

pip uninstall PIL
pip uninstall Pillow
pip install Pillow
pip install PIL
于 2013-11-06T17:11:07.333 回答