Python实现动态图解析、合成与倒放


Posted in Python onJanuary 18, 2018

动态图现在已经融入了我们的日常网络生活,大大丰富了我们的表达方式和交流趣味性。常常是一言不合就扔动图,我这里就不举例子了,例子太多,平时大家也都接触过。咱们直接开始本文的内容。

用到的库和模块

今天用看看如何用Python写个程序,进行动态图的解析、合成与倒放。这里我们用到的库有且只有PIL。而且只用到了PIL的两个模块Image和ImageSequence。顾名思义,就是图像模块和图像序列模块。动态图正好可以看作是图像序列。

简单的原理和代码

所谓动态图的解析,就是把GIF格式的图片转化为图片流的过程,而动态图的合成就是把图片流重新合成GIF图片的过程。而所谓动态图倒放,就是把图片流反序之后再合成GIF了。

原理上没啥难以理解的,我们还是直接看代码。

from PIL import Image, ImageSequence 

# 读取GIF
im = Image.open("5.gif")
# GIF图片流的迭代器
iter = ImageSequence.Iterator(im)

index = 1
# 遍历图片流的每一帧
for frame in iter:
 print("image %d: mode %s, size %s" % (index, frame.mode, frame.size))
 frame.save("./imgs/frame%d.png" % index)
 index += 1

# frame0 = frames[0]
# frame0.show()

# 把GIF拆分为图片流
imgs = [frame.copy() for frame in ImageSequence.Iterator(im)]
# 把图片流重新成成GIF动图
imgs[0].save('out.gif', save_all=True, append_images=imgs[1:])

# 图片流反序
imgs.reverse() 
# 将反序后的所有帧图像保存下来
imgs[0].save('./reverse_out.gif', save_all=True, append_images=imgs[1:])

效果

以下是动图原图、效果图。

Python实现动态图解析、合成与倒放

倒放的动态图

Python实现动态图解析、合成与倒放

动态图解析得到的图片流:

Python实现动态图解析、合成与倒放

补充说明

加上注释之后的代码完全没啥可说的有木有?

其实还还是有些地方可说的,比如图片为啥保存为PNG格式的,JPG行不行?比如第六行与第19行末尾的代码是否重复,第19行末尾能不能用iter代替?

这些问题知道的就算了,不知道的希望能够自己跑一跑代码,查一查资料,补充下这方面的小知识。

除此之外,还有哪些补充知识的方法呢?当然是看书啦~

Python 相关文章推荐
Python操作json数据的一个简单例子
Apr 17 Python
python通过索引遍历列表的方法
May 04 Python
python 排序算法总结及实例详解
Sep 28 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
Python简单实现控制电脑的方法
Jan 22 Python
python实现简单加密解密机制
Mar 19 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 #Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 #Python
python中requests和https使用简单示例
Jan 18 #Python
Python使用matplotlib实现绘制自定义图形功能示例
Jan 18 #Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 #Python
python将字典内容存入mysql实例代码
Jan 18 #Python
python测试mysql写入性能完整实例
Jan 18 #Python
You might like
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
php简单生成随机数的方法
2015/07/30 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
php intval函数用法总结
2019/04/14 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
Ajax基础知识详解
2017/02/17 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
python win32 简单操作方法
2017/05/25 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
抽象方法、抽象类怎样声明
2014/10/25 面试题
Ajax请求总共有多少种Callback
2016/07/17 面试题
法律专业实习鉴定
2013/12/22 职场文书
教书育人演讲稿
2014/09/11 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
教师节座谈会主持词
2015/07/03 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
pytorch 6 batch_train 批训练操作
2021/05/28 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏