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

正文共540个字,3张图,预计阅读时间5分钟。

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

用到的库和模块

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

原理

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

代码

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

 1from PIL import Image, ImageSequence 
 2# 读取GIF
 3im = Image.open("5.gif")
 4# GIF图片流的迭代器
 5iter = ImageSequence.Iterator(im)
 6index = 1
 7# 遍历图片流的每一帧
 8for frame in iter:
 9print("image %d: mode %s, size %s" % (index, frame.mode, frame.size))
10frame.save("./imgs/frame%d.png" % index)
11index += 1
12# frame0 = frames[0]
13# frame0.show()
14# 把GIF拆分为图片流
15imgs = [frame.copy() for frame in ImageSequence.Iterator(im)]
16# 把图片流重新成成GIF动图
17imgs[0].save('out.gif', save_all=True, append_images=imgs[1:])
18# 图片流反序
19imgs.reverse() 
20# 将反序后的所有帧图像保存下来
21imgs[0].save('./reverse_out.gif', save_all=True, append_images=imgs[1:])

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

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

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

效果

倒放

图片流

原文链接:https://www.jianshu.com/p/bc10b3985e93

本文分享自微信公众号 - 人工智能LeadAI(atleadai)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫实战

图片转字符画

字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色(暂且这么理解吧),字符的种类越多,可以表现的颜色也越多,图片也会更有层次感...

32220
来自专栏数据小魔方

R语言可视化——地图与气泡图结合应用

今天跟大家分享如何在地图上进行散点图、气泡图绘制。 昨天跟大家介绍了ggplot函数进行地图绘制的原理,通过轮廓点和分组来定义每一个地区(国家边界),通过多边形...

66740
来自专栏点滴积累

geotrellis使用(十六)使用缓冲区分析的方式解决投影变换中边缘数据值计算的问题

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 问题探索 ...

37040
来自专栏AI深度学习求索

CAM实践:基于pytorch的使用方法

注意:如果为了快一点,不使用网络的图片以及文件的话,记得更改图片地址和已下载文件地址哦

67450
来自专栏人工智能LeadAI

宠物狗图片分类之迁移学习代码笔记

本文主要是总结之前零零散散抽出时间做的百度西交大狗狗图片分类竞赛题目 竞赛.目前本人已经彻底排到了50名后面,,,也没有想到什么办法去调优,并且平时也忙没时间再...

11910
来自专栏编程

大神级Python工程师是怎么P图的,带你用Python玩转P图

? 1.PIL:Python影像库 PIL或者Python Imaging Library是一个包含许多函数来处理来自Python脚本的图像的包。PIL官方网...

48380
来自专栏javascript趣味编程

3.3 绘制曲线

如何通过HTML5绘制曲线呢?可以百度搜索chart.js查看各类曲线绘制方法。此处我们介绍百度开源程序echarts绘制曲线。打开网页http://echar...

41700
来自专栏phodal

【工具推荐】图像界的魔术师 ImageMagick

如果说 Pandoc 里文档界的瑞士军刀,那么 ImageMagick 就是图形界的瑞士军刀。 上周在为 Growth 制作插图的时候,需要:1. 合并不同的图...

35060
来自专栏AI科技评论

开发 | Google图片数据集发布最新 V3 版,涵盖600个对象类的标记边框

AI科技评论消息,日前,谷歌发布 Open Images Dataset (开发图片数据集)的 V3 版,比起今年7月份发布的 V2 版,这一最新版本的边框(b...

375100
来自专栏数据小魔方

子弹图(条形图实现)(Bullet Chart)

今天要跟大家分享的技巧是子弹图(Bullet Chart)在条形图中的实现! ▽▼▽ 前一篇分享了子弹图(柱形形式)的 制作技巧,这一片接着讲解子弹图在条形图中...

439130

扫码关注云+社区

领取腾讯云代金券