前面学习了输出MP4文件,这是非常有用的技术,因为可以发送给别人去观看,无论手机上,还是电脑上都可以查看。不过,要发布到网站上,就有点困难了,因为有一些网站不支持上传MP4文件,只支持GIF文件。像这样的需求,只能学习GIF文件生成技术,接着下来本文就告诉你怎么样来生成GIF文件。其实,只要你学会前面的动画生成,以及MP4文件生成,要想生成GIF,就非常简单了,只需要更改三行代码,就可以生成GIF文件了。所以说前面的技术都是非常基础的,学会了灵活地运用了。
下面先来看一下生成的GIF文件:
一定要记得查看前面的例子代码,因为这里只是更改一下前文的例子的代码,就可以从MP4文件转变为输出GIF文件,首先要修改的是下面这行代码:
pw_writer = animation.PillowWriter(fps = 20)
调用函数animation.PillowWriter()来构造一个GIF文件输出对象,输出的帧速率为20帧。
其次是修改保存的代码:
anim.save('ani-056.gif', writer = pw_writer)
修改文件名称和输出对象。
只要修改这两行代码,就可以把前面的例子变为输出GIF文件了。
整个完整的例子代码如下:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
# 创建绘图轴对象,创建一个空白窗口
fig = plt.figure()
axis = plt.axes(xlim =(-50, 50), ylim =(-50, 50))
line, = axis.plot([], [], lw = 2)
#创建全局数据保存列表
xdata, ydata = [], []
#定义每次重复清空函数
def init():
global xdata, ydata
xdata, ydata = [], []
line.set_data([], [])
return line,
#每帧动画更新函数
def animate(i):
# t 帧序号
t = 0.1 * i
# x, y 绘图
x = t * np.sin(t)
y = t * np.cos(t)
# 增加到列表,连接起所有点。
xdata.append(x)
ydata.append(y)
line.set_data(xdata, ydata)
return line,
anim = animation.FuncAnimation(fig, animate, init_func = init,
frames = 500, interval = 20, blit = True)
#保存的动画文件名为当前文件夹下的ani-056.gif,帧率为20帧每秒,格式为gif。
pw_writer = animation.PillowWriter(fps = 20)
anim.save('ani-056.gif', writer = pw_writer)
plt.show() # 会一直循环播放动画