时间:2021-05-22
动态图现在已经融入了我们的日常网络生活,大大丰富了我们的表达方式和交流趣味性。常常是一言不合就扔动图,我这里就不举例子了,例子太多,平时大家也都接触过。咱们直接开始本文的内容。
用到的库和模块
今天用看看如何用Python写个程序,进行动态图的解析、合成与倒放。这里我们用到的库有且只有PIL。而且只用到了PIL的两个模块Image和ImageSequence。顾名思义,就是图像模块和图像序列模块。动态图正好可以看作是图像序列。
简单的原理和代码
所谓动态图的解析,就是把GIF格式的图片转化为图片流的过程,而动态图的合成就是把图片流重新合成GIF图片的过程。而所谓动态图倒放,就是把图片流反序之后再合成GIF了。
原理上没啥难以理解的,我们还是直接看代码。
from PIL import Image, ImageSequence # 读取GIFim = 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代替?
这些问题知道的就算了,不知道的希望能够自己跑一跑代码,查一查资料,补充下这方面的小知识。
除此之外,还有哪些补充知识的方法呢?当然是看书啦~
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文给大家分享下模态Model视图跳转和Push视图跳转的需求实现。 开前自打小广告:一键合成APP引导页,包含不同状态下的引导页操作方式,同时支持动态图片引
你还在为Excel动态图表制作——实现数据的对比查询而苦恼吗,今天小编教你Excel动态图表制作——实现数据的对
ModelAndView设置ModelAndView对象,根据view的名称,和视图解析器跳到指定的页面.页面:{视图解析器前缀}+viewName+{视图解析
还在为Excel动态图表制作带多个Excel控件而苦恼吗,下面教你Excel动态图表制作带多个Excel控件,让你告别Excel动态图表制作带多个Excel
在ppt中插图动态图片与插入静止的图片没有太大的差别,只是动态的图片在编辑状态下是无法看到动态的效果的,必须在播放状态才可以。那么如何在ppt中插入动态图片?下