发布网友 发布时间:2022-04-20 21:42
共2个回答
懂视网 时间:2022-04-28 19:35
最近偶然看到一位朋友的公众号中提到了使用Python生成GIF动图。看着挺有趣的,于是尝试一下。其实是有很多制作动图的软件,但是自己丰衣足食,使用代码来实现,想想还是挺不错的。
这个制作过程很简单,我们直接贴上代码,拿代码来说:(推荐学习:Python视频教程)
首先呢!安装imageio库;接着如下代码中的注释,首先读取静态图到列表,作为GIF的每一帧;接着设置输入(静态图)、输出(动态图)和一些必要参数,我们这里设置每一帧间隔时间为1.5秒,默认是1秒,之后调用miageio.mimsave函数去保存结果。
import imageiodef 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) returndef 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相关技术文章,请访问Python教程栏目进行学习!
热心网友 时间:2022-04-28 16:43
import sysimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimation fig, ax = plt.subplots()fig.set_tight_layout(True) # 询问图形在屏幕上的大小和DPI(每英寸点数)# 注意当把图形保存为文件时,需要为此单独再提供一个DPIprint('fig size: {0} DPI, size in inches {1}'.format( fig.get_dpi(), fig.get_size_inches())) # 绘制一个保持不变(不会被重新绘制)的散点图以及初始直线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轴标签) # 以元组形式返回这一帧需要重新绘制的物体 line.set_ydata(x - 5 + i) ax.set_xlabel(label) return line, ax if __name__ == '__main__': # 会为每一帧调用Update函数 # 这里FunAnimation设置一个10帧动画,每帧间隔200ms anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200) if len(sys.argv) > 1 and sys.argv[1] == 'save': anim.save('line.gif', dpi=80, writer='imagemagick') else: # Plt.show()会一直循环动画 plt.show()