首页
统计
关于
Search
1
Win10安装mingw64配置最新版gcc与gfortran环境
609 阅读
2
李芒果空岛-1.20.1-发展记录-05
586 阅读
3
108第一届中国象棋比赛
542 阅读
4
Savitzky-Golay滤波器原理-01
535 阅读
5
史瓦西黑洞最内稳定圆轨道计算
500 阅读
默认分类
技术经验
工作学习
娱乐爱好
闲言碎语
登录
Search
标签搜索
天文
Minecraft
李芒果空岛
空间物理学
macOS
数值计算
非线性最小二乘
typecho
Python
GSL
gcc
迭代法
Fortran
Halo
朗谬尔波
Langmiur
环法自行车赛
短波通信
PTCG
Win10
Washy
累计撰写
76
篇文章
累计收到
1
条评论
首页
栏目
默认分类
技术经验
工作学习
娱乐爱好
闲言碎语
页面
统计
关于
搜索到
1
篇与
的结果
2025-05-23
多张PNG合并成GIF
0 前言 最近的工作想生成一个GIF动画,但是使用python进行合并生成时,总是会遇到颜色失真的情况。百度+询问AI,给出了Pillow库和imageio库的方案,但不管如何调整参数都不会改善失真的情况。最终发现可以使用ffmpeg来解决,在此记录下。 1 安装ffmpeg M1 Mac可以使用Homebrew工具直接安装(网络需要魔法),首先更新下Homebrew brew update brew upgrade 安装ffmpeg brew install ffmpeg 等待安装结束后,使用如下命令打印版本号,输出版本号则安装成功 ffmpeg -version 2 编写Python脚本 终端中调用ffmpeg不太方便,使用python编写一个脚本进行PNG图片合并,如下 # coding: utf-8 # author: Washy # date: 2025/05/23 import os # 将需要合并的图片路径按顺序存储 def pngfilepath2txt(filepath, txtfilepath='png2gif.txt'): # 列举指定目录下的所有png filePng = [item for item in os.listdir(filepath) if item.endswith('.png')] # 对png名称进行排序 filePng = sorted(filePng) # 将路径存储为txt with open(txtfilepath, 'w') as f: for item in filePng: f.write(f"file '{filepath}/{item}'\n") # 生成终端命令 def get_ffmpeg_cmd(fps, outfilepath, txtfilepath='png2gif.txt'): # 每秒帧数 cmd0 = '-r %d ' % fps # concat cmd1 = '-f concat ' # 需要处理的文件路径 cmd2 = '-i %s ' % txtfilepath # 调色板 cmd3 = '-filter_complex ' \ + '"split[v1][v2]; [v1]palettegen[pal]; [v2][pal]paletteuse=dither=sierra2_4a" ' # 输出文件名 - 重名自动覆盖 cmd4 = outfilepath + ' -y' return 'ffmpeg ' + cmd0 + cmd1 + cmd2 + cmd3 + cmd4 # 主函数 def png2gif_main(pngfoldpath, giffilepath, fps=5, txtfilepath='png2gif.txt'): # 将png图片路径存储为txt pngfilepath2txt(pngfoldpath, txtfilepath) # 获取终端命令 cmd = get_ffmpeg_cmd(fps, giffilepath, txtfilepath) try: # 运行终端命令 os.system(cmd) except: raise Exception('ERROR: Create gif-file failed!') else: # 删除txt os.remove(txtfilepath) if __name__=="__main__": # 待合并png存储文件夹 pngfoldpath = "imgs/images" # 生成gif存储路径 giffilepath = '01.gif' # 帧率 fps = 5 # 生成gif png2gif_main(pngfoldpath, giffilepath, fps) 3 效果展示 python库合并结果 ffmpeg合并结果 参考 使用Python生成gif颜色失真。如何避免? ffmpeg之图片转gif
2025年05月23日
11 阅读
0 评论
0 点赞