【python脚本系列】gif录制png序列帧
大家好,我是Lampard猿奋~~
欢迎来到python脚本系列的博客,今天和大家分享一下使用python将gif录制为png的序列帧
(一)环境搭建
(1)python环境搭建
python我这里是使用python2.7的环境,大家在官网【python官网】下载2.7最新的版本,下载完之后双击安装即可
然后把安装的目录加到环境变量中,win+r执行cmd命令后,输入python能够输出以下信息证明安装完毕
如果本身安装了python3,并且已经添加到环境变量的话,为了不引起冲突我们也可以选择不把python2的路径加到环境变量中,那怎么打开呢?我们需要进入到python2的安装目录,然后在这个位置执行cmd指令,输入python也能得到同样的效果
(2)pliiow库的安装
pliiow库支持大量的图片格式,是图像处理和批处理的最佳选择,可以用这个来创建缩略图、文件格式之间的转换、打印图片、大小转换、颜色转换、还有对图片加滤镜「模糊、磨皮」等操作
pillow的安装比较简单,我们可以的python的标准库管理器pip去进行下载
可能有小伙伴这个时候会报错,说pip不是外部指令什么的,然后就打算去配置一个pip。其实并不需要,python2.7自带了pip,它的路径在python安装路径\Scripts下。我们只需要把这个路径也加到环境变量就可以了
(3)gif图片准备
这里给大家提供一个(点赞,关注,你懂我意思吧)
(二)脚本实现
(1)目录结构
我这边新建了一个文件夹,然后把gif和脚本放在了一起,有一个子目录gifFrame是用来存取保存下来的序列帧(当然这个都是可以在脚本随便改的,但是如果直接拿我的脚本用的话就得根据这样的目录结构了)
(2)代码实现
首先是记录gif和gif帧的路径,我们可以通过os.path.realpath(__file__)来获得脚本的完整路径,我们并不需要脚本的名字,所以还需要通过os.path.split来把路径和脚本名分割开来
可以看到当分割之后就会返回一个列表,列表的第一项就是我们想要的gif路径了,然后帧的路径就可以GifPath + '\\gifFrame'获得(window平台下)
接下来的逻辑比较简单,主要是利用了pillow的Image模块,其中使用到了4个方法:
- Image.open:打开并标识给定的图像文件
- Image.save:在给定文件名下保存此图像。如果未指定格式,则可以从文件扩展名确定要使用的格式
- Image.tell:返回当前帧号,从0开始
- Image.seek:查找此序列文件中的给定帧。如果在序列结尾之外查找,该方法将引发
EOFError
例外。打开序列文件时,库自动查找第0帧
上述是函数的功能,如果想了解更多的话就应该去看文档啦~~【pillow库文档传送门】
我们看到seek当找不到序列帧的时候(已经遍历完了),则会报错,所以我们需要用一个try块接住它,最后我们呢看看效果
脚本下载链接:【1积分买不了吃亏,买不了上当】