python制作动态画面的方法

小编给大家分享一下python制作动态画面的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

成都创新互联服务项目包括千阳网站建设、千阳网站制作、千阳网页制作以及千阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,千阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到千阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

python动图的核心函数是matplotlib.animation.FuncAnimation,基本用法是:

anim = animation.funcanimation(fig, animate, init_func=init, frames=100, interval=20, blit=true)
# fig: 是我们创建的画布
# animat: 是重点,是我们每个时刻要更新图形对象的函数,返回值和init_func相同
# init_func: 初始化函数,其返回值就是每次都要更新的对象,
#    告诉FuncAnimation在不同时刻要更新哪些图形对象
# frames: 相当于时刻t,要模拟多少帧图画,不同时刻的t相当于animat的参数
# interval: 刷新频率,毫秒
# blit: blit是一个非常重要的关键字,它告诉动画只重绘修改的部分,结合上面保存的时间,
#    blit=true会使动画显示得会非常非常快

示例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation  # 动图的核心函数
import seaborn as sns  # 美化图形的一个绘图包

sns.set_style("whitegrid")  # 设置图形主图

# 创建画布
fig, ax = plt.subplots()
fig.set_tight_layout(True)

# 画出一个维持不变(不会被重画)的散点图和一开始的那条直线。
x = np.arange(0, 20, 0.1)
ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))
line, = ax.plot(x, x - 5, 'r-', linewidth=2)

def update(i):
    label = 'timestep {0}'.format(i)
    print(label)
    # 更新直线和x轴(用一个新的x轴的标签)。
    # 用元组(Tuple)的形式返回在这一帧要被重新绘图的物体
    line.set_ydata(x - 5 + i)  # 这里是重点,更新y轴的数据
    ax.set_xlabel(label)    # 这里是重点,更新x轴的标签
    return line, ax

# FuncAnimation 会在每一帧都调用“update” 函数。
# 在这里设置一个10帧的动画,每帧之间间隔200毫秒
anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)

生成GIF动图:

安装imageio库;接着如下代码中的注释,首先读取静态图到列表,作为GIF的每一帧;接着设置输入(静态图)、输出(动态图)和一些必要参数,我们这里设置每一帧间隔时间为1.5秒,默认是1秒,之后调用miageio.mimsave函数去保存结果。

'''
Author: Solarzhou
Email: tzhou@foxmail.com
公众号:Solarzhou
'''
import imageio
def create_gif(image_list, gif_name, duration = 1.0):
    '''
    :param image_list: 这个列表用于存放生成动图的图片
    :param gif_name: 字符串,所生成gif文件名,带.gif后缀
    :param duration: 图像间隔时间
    :return:
    '''
    frames = []
    for image_name in image_list:
        frames.append(imageio.imread(image_name))

    imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
    return

def main():
    #这里放上自己所需要合成的图片
    image_list = ['1.jpg', '2.jpg', '3.jpg']
    gif_name = 'new.gif'
    duration = 1.5
    create_gif(image_list, gif_name, duration)

if __name__ == '__main__':
    main()

看完了这篇文章,相信你对python制作动态画面的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网页名称:python制作动态画面的方法
分享地址:http://azwzsj.com/article/jhpjop.html