用Python脚本获取动画GIF
我最近在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动画。