python PIL - 将[动画] gif帧转换为JPG但是工件

时间:2013-10-11 04:28:34

标签: python image python-imaging-library

编辑:我最初搜索信息的问题是我没有区分GIF和“GIF动画”。因此,SO有很多资源来处理这个问题。 资源: Link 3

显然PIL本身没有足够的能力处理动画GIF。

我正在尝试将gif帧转换为jpg。对于一些GIF(主要是黑色和白色),这个效果很好,但对于其他人(主要是颜色)并没有那么多。我已经查看了SO上的一些帖子,并尝试了它们,但无济于事。我特别尝试了:Link1Link2

性能是一个温和的考虑因素,但是现在我只是想要一个有效的解决方案。一致的模式是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

0 个答案:

没有答案