当前位置: 首页 > 面试题库 >

Python:将GIF帧转换为PNG

华心思
2023-03-14
问题内容

我是python的新手,尝试使用它将GIF的帧拆分为PNG图像。

# Using this GIF: http://www.videogamesprites.net/FinalFantasy1/Party/Before/Fighter-Front.gif

from PIL import Image

im = Image.open('Fighter-Front.gif')
transparency = im.info['transparency'] 
im.save('test1.png', transparency=transparency)

im.seek(im.tell()+1)
transparency = im.info['transparency'] 
im.save('test2.png', transparency=transparency)

# First frame comes out perfect, second frame (test2.png) comes out black,
# but in the "right shape", i.e. 
# http://i.stack.imgur.com/5GvzC.png

这是特定于我正在使用的图像还是我做错了什么?

谢谢!


问题答案:

我认为您没有做错任何事情。在此处看到类似的问题:GIF动画问题。看起来好像调色板信息未正确用于以后的帧。以下对我有用:

def iter_frames(im):
    try:
        i= 0
        while 1:
            im.seek(i)
            imframe = im.copy()
            if i == 0: 
                palette = imframe.getpalette()
            else:
                imframe.putpalette(palette)
            yield imframe
            i += 1
    except EOFError:
        pass

for i, frame in enumerate(iter_frames(im)):
    frame.save('test%d.png' % i,**frame.info)


 类似资料:
  • 我有一个30 fps的视频。我需要提取帧从视频在1 fps。在Python中这是怎么可能的? 我有下面的代码,我从网上得到,但我不确定如果它提取帧在1 fps。请救命!

  • 有没有办法告诉ffmpg将动画gif转换为比动画gif运行时间更长的mp4?Les说gif是4秒长的设置,可以像动画gif一样重复,但我需要10秒mp4。我将如何在ffmpg中实现它。我当前的转换行如下所示: ffmpeg-i$i.gif-c:v libx264-pix_fmt yuv420p-crf 4-b:v 300K-vf scale=320:-1-movflags faststart$i.

  • 我有一个带有多个列的Python数据帧。 我想找到与LogBlk=0和Page=0关联的。 这将返回[0,1,8,9] 我要做的是将pandas.series转换为一个列表。有人知道怎么做吗?

  • 问题内容: 使用PHP将jpg图像转换为gif,png和bmp格式的可能重复项 我有一个PHP表单,该表单允许图像上传和检查以确保图像有效。 但是,我希望所有格式(PNG,JPG,JPEG和GIF)最终在提交后都是PNG。 我该怎么做呢? 问题答案: 然后,您只需要。实际上,它几乎变成了单线: 您将使用文件名,并且显然使用不同的输出文件名。但是图像格式探测本身将变得多余。

  • 问题内容: 我有一个要转换为json格式的数据框: 我的数据帧称为res1: 当我做: 我得到这个: 我需要这个json输出像这样,有什么想法吗? 问题答案: 怎么样 通过使用,我们实际上将大的data.frame分解为每一行的单独的data.frame。通过从结果列表中删除名称,该函数将结果包装在数组中,而不是命名对象中。

  • 有人知道怎么做吗?显然有一个Windows命令用于这种事情... 谢谢