微信群「斗图」总输,Python助我超神,你一定要试试
2021/12/22 17:20:31
本文主要是介绍微信群「斗图」总输,Python助我超神,你一定要试试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
微信斗图,大家最喜欢的就是发布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助我超神,你一定要试试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型