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

作者:冰不语 时间:2022-09-22 12:53:23 

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

用到的库和模块

今天用看看如何用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,动态图,合成,倒放
0
投稿

猜你喜欢

  • 大数据就业的三大方向和最热门十大岗位【推荐】

    2023-05-18 16:21:06
  • Python实现简单的四则运算计算器

    2022-12-29 20:44:08
  • pycharm2020.2 配置使用的方法详解

    2022-10-01 12:23:23
  • 重命名SQLServer数据库的方法

    2012-07-11 15:39:37
  • asp下去除超链接的函数

    2011-03-29 11:11:00
  • mysql 8.0.22压缩包完整安装与配置教程图解(亲测安装有效)

    2024-01-25 05:26:14
  • python实现telnet客户端的方法

    2021-04-14 21:07:24
  • 亚马逊购物用户体验分析 (二)

    2009-10-25 12:48:00
  • Python离线安装PIL 模块的方法

    2023-02-19 22:38:37
  • python性能测试手机号验证码登录压测示例详解

    2021-06-05 13:21:25
  • 总结Python编程中三条常用的技巧

    2022-06-04 05:52:04
  • c#操作sqlserver数据库的简单示例

    2024-01-28 11:25:23
  • 微信小程序自定义底部导航带跳转功能

    2024-05-02 17:25:49
  • MySQL视图的概念和操作函数详解

    2024-01-24 15:27:22
  • Python爬虫入门案例之回车桌面壁纸网美女图片采集

    2022-12-25 19:40:57
  • 浅谈MySQL之浅入深出页原理

    2024-01-18 20:38:29
  • 在Win2003 64位下ASP无法连接Access数据库

    2011-03-30 11:22:00
  • python 机器学习的标准化、归一化、正则化、离散化和白化

    2023-12-15 11:50:03
  • 使用python语言,比较两个字符串是否相同的实例

    2023-08-24 15:01:14
  • 用文本+ASP打造新闻发布系统

    2009-02-02 09:31:00
  • asp之家 网络编程 m.aspxhome.com