ImageMagick:png序列转gif(适合处理带透明度的图片)

最近需要将几组png序列转成gif,之前有用过“Ulead GIF Animator” 和 “Photoshop”,“Ulead GIF Animator”只有windows版,这些年mac是主力机,一直刻意减少使用PS,通过命令行应该有法子可以生成gif?


首先想到的是ffmpeg,虽然ffmpeg主要是视频处理,最近发现可以用它来做一些图片处理,例如 png转jpg、gif转png序列、裁切图片等。
一般用ffmpeg基本都是截取视频生成gif,gif没有透明度,使用 ffmpeg -i %04d.png merge.gif 这种简单的命令基本就实现了。不过,我的情况有点不一样,png带有透明度,转出来的gif也要求有透明度,摸索了好久,下面的代码解决了早期的问题。

ffmpeg代码

inFile=/Users/hf/Desktop/cmd_gif/case1/pngs/%04d.png
outFile=/Users/hf/Desktop/cmd_gif/case1/merge.gif
ffmpeg -y -i "${inFile}" -r 12 \
-filter_complex "[0:v]split[a][b]; [a]palettegen=transparency_color=ffffff[p]; [b][p]paletteuse" \
"${outFile}"

上面是mac上的终端代码,windows上运行请改成这样

ffmpeg -y -i "d:\case1\pngs\%04d.png" -r 12 ^
-filter_complex "[0:v]split[a][b]; [a]palettegen=transparency_color=ffffff[p]; [b][p]paletteuse" ^
"d:\case1\merge.gif"

-r 表示gif的fps,-r 12,表示gif是12帧每秒
“\”是mac上的续行符,“^”是windows上的续行符,代码太长了可以使用续行符进行换行处理

使用上面的命令行做了两组测试
第一次测试 效果预览
第一次转换测试 效果还不错~
第二次测试 效果预览
第二次转换测试 就不太理想,gif有明显的重影,在mac上双击gif使用“预览”能查看gif关键帧情况,可以发现第2、第3个关键帧有上一帧的重影
使用“预览”能查看gif
摸索了很久仍然没有解决重影问题,最后转投ImageMagick~~

inFile=/Users/hf/Desktop/cmd_gif/case2/pngs/*.png
outFile=/Users/hf/Desktop/cmd_gif/case2/merge.gif
convert -delay 10 -loop 0 "${inFile}" -set dispose background +repage "${outFile}"

使用ImageMagick合并gif
-delay 10 可以根据实际情况进行调整,越小播放速度就越快

嗯~ 真 香 !

两组测试用到的图片资源,已分享到百度网盘了
链接:https://pan.baidu.com/s/1zIoFaY08ET7vLGns1N9Elw 密码:l0cv
*图片资源来自某款像素游戏,仅供学习交流使用!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值