【python脚本系列】png序列帧转化为gif

                             【python脚本系列】png序列帧转化为gif

   

        大家好,我是Lampard猿奋~~

        欢迎来到python脚本系列的博客,今天和大家分享一下使用python如何将序列帧转化为gif

(一)环境搭建

      为什么会有那么奇怪的做法呢?其实是在最近我接到了一个在游戏项目中录屏并导出gif的需求。cocos是没有gif导出功能的(好像unity也没有?),其只支持png,jpg格式的导出。因此这个需求就被拆分为录制序列帧+把序列帧转化成gif,引擎录取序列帧我们可以通过计时器加截图来实现,下面主要说说如何把序列帧转换为gif。

      python环境搭建我已经在上一篇文章那里提及,大家可以跳转过去配置一下:【gif录制png序列帧】

(二)脚本实现

(1)目录结构

      我这边新建了一个文件夹,里面有一个制作gif动画的脚本gifMaker.py,有一个子目录gifFrame是用来存gif的序列帧(当然这个都是可以在脚本随便改的,但是如果直接拿我的脚本用的话就得根据这样的目录结构了)

(2)代码实现

      首先是记录gif和gif帧的路径,我们可以通过os.path.realpath(__file__)来获得脚本的完整路径,我们并不需要脚本的名字,所以还需要通过os.path.split来把路径和脚本名分割开来

      可以看到当分割之后就会返回一个列表,列表的第一项就是我们想要的gif路径了,然后帧的路径就可以GifPath + '\\gifFrame'获得(window平台下)

      首先写一个方法,用os.listdir方法把gifFrame里面所有的文件给保存在列表中。然后还需要对里面的文件进行排序,不然的话会出现10.png排在2.png之前这种bug,打印一下排序前和排序后的效果

      排序前:0,1,10。排序后:0,1,2

      最后就是利用序列帧来生成gif了,同样使用到的是save方法,其中介绍一下几个参数:

  • save_all:是否展示所有帧,false的话就只显示第一帧
  • append_images,除第一帧之外之后的帧

  • duration:每一帧的持续时间,单位是毫秒

  • loop:重复次数,loop==0时一直重复

      如果想了解更多的话就应该去看文档啦~~【pillow库文档传送门】

(三)PyInstaller

      这是一个小工具,使用的策划或者QA可能并没有我们python2的环境,让他们也搭建一个那是非常不现实的。所以我们需要把python脚本编译成exe可执行文件。而这个步骤就需要用到PyInstaller模块,我们可以从官网去下载,也可以通过pip去install

      然后在该文件目录下打开cmd,然后输入以下语句就可以打包exe文件了

      生成的exe存放在PyInstaller的子目录dist下,我们需要把这个exe文件复制到python的位置上,不然它拿gif路径的时候就会出错了

      看看最后效果:

以上是学习路上的一点思绪,欢迎大家评论指点~


点赞,关注!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard家杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值