python实现GIF生成工具

由于在线Gif工具收费且有水印,博主决定自行编写一个Python脚本制作Gif。该脚本支持Python2和Python3,需要Pillow插件。用户可以通过命令行或拖拽图片到批处理文件上使用,能将单个图片或文件夹内的图片合成为Gif。核心功能是调用PIL.Image的save方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写文章的时候,需要合成一张Gif动图,结果之前一直使用的在线Gif工具居然要收费了,否则就得加水印,而且水印巨大无比,挡住主要内容了。于是就去github上找了一圈,结果没有找到理想的工具,基本上是使用文档不清晰,或者不支持自定义输入参数。不过也没白逛,扫了一眼代码,发现生成Gif的方法非常简单,所有就决定自己写了一个。

代码已上传到github: https://github.com/youlanhai/makegif

用法

python makegif.py 后面输入图片文件路径或文件夹,即可合成gif图片。本脚本支持python2和python3,需要先安装Pillow插件: pip install Pillow。Windows用户还可以直接把图片路径或文件夹,拖拽到makegif.bat上面即可。

用法1:输入多个图片,自动在图片父目录下生成一张input.gif

python makegif.py input/1.png input/2.png input/3.png

用法2: 输入图片文件夹,工具会收集input文件夹下的所有图片,然后合成gif,输出为input.gif

python makegif.py input

完整参数:

usage: makegif.py [-h] [-d DURATION] [-o OUTPUT] [-f FILTERS] [-s SIZE]
                  [-l LOOP]
                  inputs [inputs ...]

创建gif图片

positional arguments:
  inputs                输入文件路径,或文件夹。支持混合输入

optional arguments:
  -h, --help            show this help message and exit
  -d DURATION, --duration DURATION
                        时间间隔。默认200ms
  -o OUTPUT, --output OUTPUT
                        输出路径。如果未指定,则使用第一个图片所在的文件夹作为名称。如果文件夹为当前路径,则输出名称为out.git
  -f FILTERS, --filters FILTERS
                        用于在文件夹中搜索指定的后缀文件。默认: png,jpg,bmp
  -s SIZE, --size SIZE  输出图片大小。格式: 640x480; 或者640x,仅限定宽度为640,高度等比缩放;
                        或者x480,仅限定高度为480,宽度等比缩放
  -l LOOP, --loop LOOP  循环次数。默认0,表示无限循环

实现说明

核心点就一个函数,调用PIL.Image的save方法,传入gif需要的参数即可:

images = [PIL.Image.open(path) for path in inputs]
images[0].save(output_path, save_all = True, duration = 200, loop = 0, append_images = images[1:])
参数说明
output_path输出路径,必须是.gif后缀
save_all保存所有后续的序列帧。必须为True
durationgif播放间隔,单位为毫秒
loop播放的循环次数。0表示无限循环;不传表示不循环
append_images后续的序列帧

脚本剩余功能主要是参数处理,和路径处理。

参考

pillow文档-PIL.Image.save

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值