用Python脚本获取动画GIF

2 投票
2 回答
4338 浏览
提问于 2025-04-18 12:52

我最近在iOS上玩Pythonista,想写一些自动化脚本。

我遇到了一个问题,想从一个远程网址获取一个动图(gif)。我写了下面这个脚本。

import Image
from urllib import urlopen
from io import BytesIO

url = "http://someurl.com/funny.gif"
img = Image.open(BytesIO(urlopen(url).read()))

我能拿到图片,但好像只显示了动图的第一帧?我在想可能是因为BytesIO没有把整个文件读进来,但我不太确定。

希望我在朝着正确的方向努力。

2 个回答

2

根据 Pillow手册 的说明:

要保存所有的帧,必须设置一个叫做 save_all 的参数,并且它的值要为 True。

所以,打开的图片可以这样保存:

image.save('filename.gif', save_all=True)

3

你快到了。你可以用 img.seek 来切换帧。所以……

import Image
from urllib import urlopen
from io import BytesIO
url = 'http://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif'

img = Image.open(BytesIO(urlopen(url).read()))

# Start with first frame
img.seek(0)
#img.show()

# Advance by one
img.seek(img.tell() + 1)
#img.show()

这里有一个StackOverflow的帖子,展示了如何使用Image类来保存一个gif动画。

撰写回答