编辑:我最初搜索信息的问题是我没有区分GIF和“GIF动画”。因此,SO有很多资源来处理这个问题。 资源: Link 3
显然PIL本身没有足够的能力处理动画GIF。
我正在尝试将gif帧转换为jpg。对于一些GIF(主要是黑色和白色),这个效果很好,但对于其他人(主要是颜色)并没有那么多。我已经查看了SO上的一些帖子,并尝试了它们,但无济于事。我特别尝试了:Link1,Link2。
性能是一个温和的考虑因素,但是现在我只是想要一个有效的解决方案。一致的模式是gif的第一个图像总是完美无缺。有趣的是,我甚至尝试了Zamzar,它也产生了相同的噪声数据。我正在做一些研究,似乎这可能是LZW压缩算法的一个问题,虽然在SO上,我看过帖子表明PIL负责LZW压缩。另一方面,我听说LZW减压是有利的。
请注意,我也尝试过在没有成功的情况下转换为PNG。白点是否叠加在图像顶部或其他东西上?
这是产生此错误的sample gif。
编辑:我刚遇到images2gif.py。如果它适用于这个问题,我会更新这篇文章。
以下是我正在使用的代码:
from PIL import Image
import sys
import os
def processImage(infile):
try:
im = Image.open(infile)
except IOError:
print "Cant load", infile
sys.exit(1)
i = 0
mypalette = im.getpalette()
try:
while 1:
im.putpalette(mypalette)
new_im = Image.new("RGB", im.size)
#new_im = Image.new("RGB", im.size)
new_im.paste(im)
new_im.save('foo'+str(i)+'.png')
#if(os.stat('foo' + str(i)+'.png')):
# os.remove('foo' + str(i) + '.jpg')
i += 1
mypalette = im.getpalette()
im.seek(im.tell() + 1)
except EOFError:
pass # end of sequence