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

 更新时间:2018年01月18日 13:43:01   作者:冰不语  
这篇文章主要为大家详细介绍了Python实现动态图的解析、合成与倒放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

用到的库和模块

今天用看看如何用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:])

效果

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

倒放的动态图

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


补充说明

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

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

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

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

相关文章

  • 一文带你掌握Pyecharts地理数据可视化的方法

    一文带你掌握Pyecharts地理数据可视化的方法

    这篇文章主要介绍了一文带你掌握Pyecharts地理数据可视化的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 利用Python获取操作系统信息实例

    利用Python获取操作系统信息实例

    作为一个运维人员,经常需要获取系统的的各种信息,使用python会很方便帮助获得,这篇文章运用实例告诉大家如何利用Python来获取操作系统的信息,有需要的可以参考借鉴。
    2016-09-09
  • python实现一个点绕另一个点旋转后的坐标

    python实现一个点绕另一个点旋转后的坐标

    今天小编就为大家分享一篇python实现一个点绕另一个点旋转后的坐标,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python数据处理篇之Sympy系列(五)---解方程

    Python数据处理篇之Sympy系列(五)---解方程

    这篇文章主要介绍了Python数据处理篇之Sympy系列(五)---解方程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • python中pygame针对游戏窗口的显示方法实例分析(附源码)

    python中pygame针对游戏窗口的显示方法实例分析(附源码)

    这篇文章主要介绍了python中pygame针对游戏窗口的显示方法,以完整实例形式较为详细的分析了pygame响应键盘按键改变窗口显示效果的相关实现技巧,需要的朋友可以参考下
    2015-11-11
  • Qt实现炫酷启动图动态进度条效果

    Qt实现炫酷启动图动态进度条效果

    最近接到一个新需求,让做一个动效进度条。刚接手这个项目真的不知所措,后来慢慢理清思路,问题迎刃而解,下面小编通过本文给大家带来了Qt实现炫酷启动图动态进度条效果,感兴趣的朋友一起看看吧
    2021-11-11
  • python中第三方库lxml库的最新详细安装步骤

    python中第三方库lxml库的最新详细安装步骤

    这篇文章主要给大家介绍了关于python中第三方库lxml库的最新详细安装步骤,lxml是一种使用Python编写的库,可以迅速、灵活地处理 XML,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Alpine安装Python3依赖出现的问题及解决方法

    Alpine安装Python3依赖出现的问题及解决方法

    这篇文章主要介绍了Alpine安装Python3依赖出现的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • PaddleOCR 识别表情包文字示例详解

    PaddleOCR 识别表情包文字示例详解

    这篇文章主要为大家介绍了PaddleOCR 识别表情包文字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • python 基于UDP协议套接字通信的实现

    python 基于UDP协议套接字通信的实现

    这篇文章主要介绍了python 基于UDP协议套接字通信的实现,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01

最新评论