功能关键词:图片序列转GIF、按文件夹批量合成、播放速度、文字水印。
工具介绍
图片到GIF批量转换工具将同一文件夹内的图片按文件名自然顺序合并为一个GIF,每个包含图片的文件夹对应一个动画,适合将多组图片序列统一整理为动画图片。
页面提供帧间隔、循环次数、调整大小、并行线程、颜色质量、文件名前缀和后缀,以及可选的文字水印;实际任务请在下方的进度与日志中确认。源代码文件名为批量GIF制作工具.py,正式工具名为图片到GIF批量制作工具。
工具截图

主要功能
- 按文件夹分组批量制作GIF文件,每组图片按自然顺序排序,数字文件名按1、2、10等顺序排列。
- 支持PNG、JPG、JPEG、BMP、GIF、WebP、TIFF/TIF输入。
- 设置每帧的显示时间和GIF的循环参数,默认为100毫秒和无限循环。
- 可以不更改尺寸、统一为第一张图片的尺寸,或直接指定宽度和高度。
- 通过质量滑块控制调色板的颜色数量,将并行任务设置为1~16。
- 使用前缀和后缀为输出GIF文件命名,还提供递归遍历目录时保留相对层级的选项。
- 为每帧添加文字水印,选择字号、颜色及9个放置位置。
使用前的准备
将每组图片放在同一个子文件夹中,然后选择包含这些子文件夹的主文件夹。默认情况下,不遍历时,仅处理第一层子文件夹,不处理直接放在主目录中的图片。
仅在启用遍历时,才包含主目录本身及其下的所有目录;每个任务仅读取该目录直属的图片,不会将后代目录的图片合并到父级动画中。
请准备一个已存在的保存目录;页面不提供添加单个文件、拖入图片列表、动画预览功能。为防止输出GIF文件成为后续输入,建议将源目录与保存目录分开。
在当前实现中,源GIF文件、动画WebP文件、多页TIFF文件仅读取打开时的第一帧/第一张图片,不会提取全部动画帧。顺序由按名称排序决定,页面没有手动拖放排序的操作区域。
详细操作步骤
1. 选择图片集主目录与保存目录,确定扫描范围
点击“路径设置”中“主文件夹”的“浏览”,选择包含图片子文件夹的目录,或拖入目录;然后点击“保存目录”的“浏览”,选择用于保存GIF文件的已存在目录。输入框仅接受单个目录,不接受多个文件路径的列表。
默认未勾选“遍历子目录”:仅搜索主目录的第一层子文件夹,排除直接放在主目录中的图片。勾选后,将搜索主目录及其下的所有目录,每个目录直属的图片各自构成一组;不包含支持的图片的目录不会创建任务。
仅在需要保留层级时勾选“保留原路径结构”。例如,主目录下“地区/月份”中的图片,将按照父目录层级放置到输出“地区/月份.gif”;GIF名称仍使用这组图片的文件夹名。关闭遍历后,结构复选框会被取消勾选。
当前结构算法对属于主目录本身的任务使用父目录的相对路径:当主目录本身包含图片,且遍历与保留结构均已启用时,根任务可能写入保存目录的父目录。建议将每组图片放在子文件夹中,或不要启用保留结构。
这张图中,仅为显示结构选项而启用了遍历,未进行素材选择、拖入或制作。

2. 设置帧间隔、循环、尺寸
在“参数与操作”的第一行设置“帧间隔”;范围为10~5000毫秒,默认为100毫秒;数值越小,每帧显示的时间越短。当前所有帧使用相同间隔,没有逐帧显示时间设置。
“循环”的范围为0~100,0显示为“无限”;需要有限循环次数时,请选择正数。程序将此数值写入GIF的循环参数,具体播放行为由查看器解释,页面既没有播放按钮,也没有预览按钮。
“尺寸”默认为“不调整大小”;“匹配第一张图片”将其他图片缩放至排序中第一张图片的宽度和高度;“自定义”显示宽度和高度输入框,默认为320×240,可分别调整为1~4096像素。
统一尺寸会直接缩放至指定的宽度和高度,没有保持宽高比的填边或裁剪选项,宽高比不同时可能发生拉伸。即使使用“不调整大小”模式,也不会自动统一各帧尺寸,建议对齐源画布。
这张图中,仅为显示已有的两个默认值320×240而选择了“自定义”,未输入测试图片或进行尺寸转换。

3. 调整并行度、颜色质量与输出命名
第二行“线程”的范围为1~16,默认为4,控制同时处理的图片文件夹数量。每个任务会将该组的帧读入内存,图片数量多或尺寸大时,可以根据机器内存降低并行度;这并不是将一张图片拆分给多个线程。
“质量”的范围为10%~100%,默认为100%,实际控制GIF自适应调色板的颜色数量:100%时最多使用256色,降低数值会减少颜色数量,既不表示保留原图的所有颜色,也不表示目标文件大小或压缩率。
“前缀”和“后缀”可以留空。输出名称由前缀、图片集文件夹名、后缀、.gif组成,不会使用第一张图片的文件名,也不会根据图片数量自动编号。
不遍历时,会直接覆盖同名的已有GIF文件;遍历时,会尝试添加_1、_2等以避免冲突。并行处理多个同名文件夹并将输出扁平化时,仍可能同时获取到同名输出位置,建议适当区分组名,或保留有效的子目录结构。
在Windows中,代码使用大小写通配符分别收集图片,且不去重,因此同一文件可能在帧列表中被重复计数;因此,日志中的帧数不等于去重后的源图片数量。本文未执行用于验证的合成。

4. 按需启用文字水印,设置字号、颜色、位置
需要为每帧添加文字时,勾选“启用水印”后,“文字”、字号、颜色按钮、位置下拉框将启用;不需要水印时,请保持不勾选。即使已启用,文字为空时也不会绘制水印。
在“文字”中输入要显示的内容;“字号”的范围为8~72,默认为20;点击色块选择文字颜色;默认为白色。可选位置为左上、上中、右上、左中、居中、右中、左下、下中、右下,默认为左上。
水印在调整大小后绘制,边缘位置使用10像素边距,字号为固定像素大小。页面不提供不透明度、描边、图片水印、水印预览,也不会自动将长文本容纳在画布内。
RGBA图片先放在白色背景上,再转换为RGB,输出不保留此透明通道;请勿将文字水印开关当作GIF透明度设置。
截图中,仅为显示可用控件而勾选了水印选项,水印文字保持为空,未选择颜色、输入测试内容或生成帧。

5. 实际开始后查看进度与日志,从目录中找到GIF文件
两个目录路径和参数实际准备好后,点击“开始处理”。程序首先重新确认使用权限,然后筛选包含支持的图片的目录,创建后台任务;本文未点击。
下方“进度与日志”按已完成的文件夹数量推进,右侧显示预计剩余时间,任务失败也会推进。日志通过对勾或叉号区分结果,并显示目录名、读取的帧数、跳过的图片数量;整体“完成”状态不代表所有组都成功。
需要中断时,点击“停止”。在文件夹任务之间检查停止标志,已运行的文件夹并不会逐帧立即中断;多线程时,可以取消尚未开始的任务,但运行中的任务可能继续写入输出;界面会等待线程结束,在此期间可能暂时无响应。
完成后,请通过文件管理器进入保存目录,查找.gif文件;页面没有用于打开目录、下载、另存为、播放已完成输出的按钮。日志仅记录组名和状态,没有输出路径的完整列表。
截图仍显示“准备就绪”、空进度和占位日志,没有处理结果。本次使用快速制作模式,未选择或上传素材、执行GIF合成或验证输出。

主要参数说明
| 参数 | 功能 | 建议 |
|---|---|---|
| 遍历子目录 | 默认关闭,仅处理第一层子文件夹;启用后,包含主目录及所有层级的目录。 | 为每个包含图片的目录分别生成动画。 |
| 保留原路径结构 | 依赖遍历。 | 根目录本身包含图片时,请注意父目录相对路径的问题。 |
| 帧间隔 | 10~5000毫秒,默认为100。 | 所有帧的显示时间均相同;数值越小越快。 |
| 循环 | 0~100,0显示为“无限”。 | 写入GIF的循环参数,播放由查看器解释。 |
| 尺寸 | 不调整大小、匹配第一张图片、自定义。 | 自定义为1~4096,默认为320×240,直接缩放。 |
| 线程 | 1~16,默认为4。 | 同一组内的帧会读入内存;较大的组可以降低并行度。 |
| 质量 | 10%~100%,默认为100%,控制颜色数量。 | 不是压缩比例或像素尺寸。 |
| 前缀/后缀 | 默认为空,附加到文件夹名上。 | 默认不遍历时会覆盖同名文件;请先确认命名。 |
| 水印 | 默认关闭;文字为空时不绘制。 | 字号为8~72,默认为20、白色、左上。 |
结果与保存
每个图片集生成“前缀+文件夹名+后缀.gif”,启用结构时,按图片集父级的相对路径保存。非遍历模式不会避开已有文件,遍历模式会尝试添加编号;并行处理时,相同名称需要提前区分。
仅读取到的GIF文件或多页图片的第一帧会被使用,输出质量是调色板的颜色数量。即使为100%,颜色仍受GIF限制;透明RGBA首先合成到白色背景上,统一尺寸可能造成拉伸。
进度基于任务数量,读取失败的图片可以跳过;仍有帧时可能生成输出,日志会记录跳过数量。没有可读取的帧时会记录失败,不应将整体完成状态当作素材完整性报告。
停止后,运行中的组仍可能写入输出,程序不会回滚已完成的GIF文件,也不支持断点续作。请检查设置的保存目录及已说明的层级;本次既未生成结果,也未进行验证。
常见问题与使用建议
1. 主目录中有图片,为什么却报告没有图片集?
默认仅检查第一层子文件夹;对于直接放在主目录中的图片,请启用遍历,或将每组图片放在子文件夹中。
2. 图片按什么顺序合成?
按文件名自然顺序排序,数字部分按数值顺序排序;没有手动排序功能。
3. 可以包含输入GIF的所有帧吗?
当前仅读取打开时的第一帧,动画WebP和多页TIFF文件也不会展开为全部帧。
4. 100毫秒代表什么帧率?
表示每帧100毫秒的目标显示时间;显示时间越短越快,最终播放由查看器实现。
5. 自定义尺寸会自动保持宽高比吗?
不会,图片按宽度和高度直接缩放,没有保持宽高比的填边或裁剪选项。
6. 100%质量会保留原图的所有颜色吗?
不会,最多256色;质量滑块控制调色板的颜色数量。
7. 水印选项为什么显示为灰色?
先勾选“启用水印”,字号、颜色、位置等选项才可用;文字为空时不会绘制任何内容。
8. 同名的已有GIF会被覆盖吗?
不遍历时会直接覆盖;遍历时会尝试添加编号,但并行处理时,相同名称仍应提前区分。
9. 保留结构时,为什么应避免将图片直接放在根目录?
当前根任务会生成相对于父目录的路径..,GIF可能被写入保存目录的父目录;建议将所有图片按组放入子目录。
10. 停止后,所有组都会立即结束吗?
不会,当前组可能继续写入输出,界面会等待线程结束;没有暂停或恢复功能。




