
本文转自:数据分析与统计学之美
微信斗图
微信斗图,大家最喜欢的就是发布Gif动图了。它的原理其实很简单,就是一帧一帧的图片拼接在一起,组合而成的。当他们来回切换的速度很快时,就相当于在看电影。
假如有这样一组图片:

如果制作完成后,是这样的:

还是挺有意思的,如果换成你女友的照片,制作后发给她,肯定对你很崇拜。
制作过程
整个制作流程很简单,共分为7步。
这里首先导入需要使用的2个库。
import os
import imageio
1. 获取当前的工作路径
path = os.getcwd()
print(path)
结果如下:

2. 获取当前工作路径下的文件列表
file_list = os.listdir(path)
print(file_list)
结果如下:

3. 复制一个列表
这里介绍的是列表的copy()方法,大家可以自行下去对比学习它与deepcopy()方法的区别。
png_list = file_list.copy()
print(png_list)
结果如下:

4. 只保留结尾都是jpg的文件
如果你的图片既有jpg,又有png,就需要你在这里加一个判断。
for file in file_list:
if file[-3:]!= "jpg":
png_list.remove(file)
print(png_list)
结果如下:

5. 将图片文件中的数字,升序排列
可以看到,我这里文件的数字都是1-7排列好的,升序排列后,数字较小的图片,位于gif动态图的最前面。
jpg_list.sort(key=lambda x: float(x[:-4]))
jpg_list
结果如下:

6. 拼接得到每张图片的绝对路径
for jpg in jpg_list:
image_path = os.path.join(path, jpg)
print(image_path)
结果如下:

7. 获取每张照片的RGB通道值,将7张照片的RGB通道值,保存在列表中
frames = []
for jpg in jpg_list:
image_path = os.path.join(path, jpg)
frames.append(imageio.imread(image_path))
print(len(frames))
结果如下:

8. 将图片保存为gif图,设置了切换时间
gif_path = os.path.join(path, "my_gif.gif")
imageio.mimsave(gif_path, frames, 'GIF', duration=0.2)
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
量化: 定投基金到底能赚多少钱? | 我用Python对去年800只基金的数据分析
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析| 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记灯谜答题王 |用Python做个海量小姐姐素描图碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
年度爆款文案
点阅读原文,领AI全套!
本文详细介绍了如何使用Python制作GIF动态图,包括获取工作路径、筛选图片、排序、读取图片并保存为GIF等步骤。通过这个教程,读者可以学会利用Python将一系列静态图片合成有趣的动态效果。

被折叠的 条评论
为什么被折叠?



