文/IT可达鸭
图/IT可达鸭、网络
前言
最近在写技术文档的时候,发现一个问题。对于每个技术步骤,都需要一个截图,这样下来整篇文档都是截图,显得不是特别的专业。
为了解决这个问题,我想到一个方法,就是把技术文档中,每个模块系列截图生成一个动态GIF,这样就可以节省大量的篇幅,而且显得有技术水平一些。
举个例子:我们要在pycharm中安装一个python包,就可以按照以下的步骤去做。
是不是非常方便?这里我把源码分享给大家,来,上代码。
环境配置
python版本: 3.6.0
编辑器: pycharm
项目所需要的环境安装包
pip install imageio
第一步:导包
imageio
:这个第三方库可以导入很多格式类型的照片,然后又可以将其导出成各种格式的照片,非常好用。
os
:目录操作、路径操作、文件操作的包。
# encoding:utf-8
import imageio
import os
第二步:生成GIF的函数
create_gif
函数,根据输入的图片文件路径,按顺序生成GIF。其中
duration
接收的参数单位是秒,也就是动图中每一帧的显示时间。
def create_gif(image_list, gif_name, duration = 1.0):
'''
生成GIF
:param image_list:
:param gif_name:
: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
第三步:获取所有的图片
get_all_all_file
: 获取指定文件夹下的所有图片文件,
这里只获取目录的第一层文件,并且按文件名进行排序
。如果想递归获取可以参考之前的文章《
用python给女朋友画张素描,网友:程序员有女朋友?
》里面有介绍如何递归获取文件。
def get_all_file(file_dir, tail_list=('.jpg', '.png', '.jpeg')):
"""
获取所有的文件名
:param file_dir: 指定目录
:param tail_list: 指定文件类型(后缀名)
:return:
"""
file_list = []
for root, dirs, files in os.walk(file_dir):
for file in files:
for tail in tail_list:
if file.endswith(tail):
file_list.append(os.path.join(root, file))
break
file_list.sort() # 排序
return file_list
第四步:主函数
确定好原始图片存放的目录,以及生成的gif存放的目录位置,设置每张图片展示的时间。
if __name__ == '__main__':
# 指定输入目录, 与输出目录
input_dir, output_dir = 'data', 'output'
# 每张图片停留的时间(秒)
duration = 1.5
file_list = get_all_file(input_dir)
create_gif(file_list, os.path.join(output_dir, 'result.gif'), duration
结语
代码量不多,这就是python,有人喜欢它的简洁,有人喜欢它便捷。不可否认的是,现在连小学都开设python课程了。当然,python 也有它的弊端,它做不了大型高并发的后端,但是,
对于人工智能的开发,python有它独特的优势。
python动图
。 我把源码发你。持续关注"
IT可达鸭
"
,
每天除了分享有趣Python源码,还会介绍NLP算法。最后,感谢大家的阅读,祝大家工作生活愉快!