GIF图现在已经融入了我们的日常网络生活,微信群、QQ群、朋友圈......一言不合就斗图,你怕了吗?
不用担心,只要学会了Python之GIF倒放技能,你就是“斗图王”。
咱们直接开始本文的内容!
使用的工具
1
PIL(Python Image Library)——它是python的第三方图像处理库,功能非常的强大,几乎被认定为Python的官方图像处理库。
功能如下:
1、图像归档(Image Archives)。
PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
2、图像展示(Image Display)。
PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
3、图像处理(Image Processing)。
PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
操作步骤
2
Step1:导入PIL库的模块
Image是PIL库的基本核心类,用来实现导入GIF
from PIL import Image, ImageSequence #导入PIL库的Image和 ImageSequence 模块im = Image.open('1.gif') #导入需要倒放的gif
Step2:GIF图片分解成帧
ImageSequence模块包括了一个wrapper类,它能够让用户迭代访问图形序列中每一帧图像。利用ImageSequence中的Iterator函数创建一个迭代器实例,让用户循环访问序列中的全部图像。
sequence = [] #用来存放GIF分解成帧的序列i=0for f in ImageSequence.Iterator(im): #循环访问GIF中的逐帧 sequence.append(f.copy()) i+=1 f.save('out_'+str(i)+'.png') #将每次分离出来的帧保存
可以看到文件夹中已经有分解的静态图片了,每张图都是gif动图的某一帧,把所有的静态图按倒序连起来就是倒放的gif动图。
Step3:将得到的序列通过reverse()函数倒序
sequence.reverse() #将帧序列倒叙
Step4:将得到的帧序列重新还原成GIF:
sequence[0].save('out1.gif',save_all=True,append_images=sequence[1:]) #生成新的GIF
Step5:得到倒放GiF图片
倒放效果:
正放效果:
大家可以自己亲手去试试看,其实在学习python的过程中也是欢乐无穷呢!
下面为大家带来一些实例:
浣熊被投喂VS 人类被投喂
3
修复破碎乒乓球
4
感受化学反应之美
5
Python学习虽然枯燥,但是却极为实用,GIF动图倒放你学会了吗?快来,我们一起开启“斗图王”的巅峰人生。
关注数据皮皮虾
开启沙雕斗图模式!
本期作者:文萌
本期编辑校对:张惠宁