1

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

显然 PIL 本身在处理 gif 动画方面的能力很差。

我正在尝试将 gif 帧转换为 jpg。对于某些 GIF(主要是黑白),效果很好,但对于其他 GIF(主要是彩色)则不然。我已经查看了一些关于 SO 的帖子,并尝试了它们,但无济于事。特别是我尝试了:Link1Link2

性能是一个温和的考虑因素,但现在我只想要一个可行的解决方案。一个一致的模式是 gif 的第一张图像总是完美的。有趣的是,我什至试用了Zamzar,它也产生了相同的噪声数据。我正在做一些研究,似乎这可能是 LZW 压缩算法的一个问题,尽管在 SO 上,我看到一些帖子建议 PIL 负责 LZW 解压缩。另一方面,我听说 LZW 减压是有利的。

请注意,我也尝试过转换为 PNG,但也没有成功。白点是分层在图像上还是什么?

这是产生此错误的示例 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
4

0 回答 0