ComfyUI Save Image Extended 插件完全保姆级教程
1. 插件简介
插件原地址: https://github.com/audioscavenger/save-image-extended-comfyui
这个插件就像是一个"超级智能的图片管家"!你知道平时我们保存图片时,ComfyUI 只能保存成 PNG 格式,而且文件名都是一样的,很难管理对吧?
这个插件能帮你:
- 换格式保存:不只是 PNG,还能保存成 WebP、AVIF、JPEG、JXL 等各种格式(就像把照片洗成不同尺寸的相册)
- 自定义文件名:可以把采样器名称、CFG 值、步数等信息自动加到文件名里(就像给每张照片贴上详细标签)
- 自动分类文件夹:根据使用的模型、参数等自动创建文件夹(就像把照片按拍摄地点自动分类)
- 保存详细信息:把生成图片时用的所有设置保存成文本文件(就像给每张照片写日记)
插件包含节点总数:1个
- SaveImageExtended 节点:超级图片保存器
2. 如何安装
方法一:通过 ComfyUI Manager(最简单)
- 打开 ComfyUI Manager(就像打开应用商店)
- 搜索 "save image extended" 或者 "audioscavenger"
- 点击安装按钮
方法二:手动下载
- 进入你的 ComfyUI 安装目录
- 找到
custom-nodes文件夹 - 在这个文件夹里打开命令行
- 输入:
git clone https://github.com/audioscavenger/save-image-extended-comfyui.git
方法三:下载压缩包
- 访问 https://github.com/audioscavenger/save-image-extended-comfyui
- 点击绿色的 "Code" 按钮
- 选择 "Download ZIP"
- 解压到
ComfyUI/custom-nodes目录下
安装依赖包
安装完插件后,还需要安装一些额外的包才能支持所有格式:
pip install numpy pillow pillow-avif-plugin pillow-jxl-plugin
3. 节点详细解析
3.1 SaveImageExtended 节点 - 超级图片保存器
这个节点就像是一个"全能照片冲印店"。你给它图片,它不仅能冲印成各种格式,还能按你的要求给照片分类、命名、写备注。
3.1.1 必填参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | 图像输入 | 连接生成的图片 | 就像把要冲印的照片交给店员 | 接收需要保存的图像数据 | 连接 KSampler 或其他生成图片的节点输出 |
| filename_prefix | filename_prefix | 文本 | ComfyUI | 就像给每张照片起个固定的开头名字 | 文件名的固定前缀 | 输入 "MyArt" 会让文件名变成 "MyArt-xxx.webp" |
| filename_keys | filename_keys | 多行文本 | sampler_name, cfg, steps, %F %H-%M-%S | 就像给照片贴标签,把重要信息写在文件名上 | 从工作流中提取参数值添加到文件名 | 输入 "cfg, steps" 会让文件名包含 CFG 值和步数 |
| foldername_prefix | foldername_prefix | 文本 | 空 | 就像给文件夹起个固定的开头名字 | 文件夹名的固定前缀 | 输入 "Generated" 会创建 "Generated-xxx" 文件夹 |
| foldername_keys | foldername_keys | 多行文本 | ckpt_name | 就像按照片类型自动分文件夹 | 从工作流中提取参数值创建文件夹 | 输入 "ckpt_name" 会按模型名创建文件夹 |
| delimiter | delimiter | 文本 | - | 就像标签之间的分隔符号 | 文件名中各部分之间的分隔字符 | 输入 "_" 会让文件名变成 "prefix_cfg_steps.webp" |
| save_job_data | save_job_data | 下拉选择 | disabled | 就像给每张照片写详细的拍摄日记 | 是否保存生成参数到 JSON 文件 | 选择 "basic, prompt" 会保存基本信息和提示词 |
| job_data_per_image | job_data_per_image | 开关 | False | 就像每张照片单独写日记还是写在一本日记里 | 是否为每张图片单独创建数据文件 | 开启后每张图片都有自己的 .json 文件 |
| job_custom_text | job_custom_text | 文本 | 空 | 就像在照片日记里写自己的备注 | 保存到数据文件中的自定义文本 | 输入 "测试图片" 会保存到 JSON 文件中 |
| save_metadata | save_metadata | 开关 | True | 就像把拍摄信息写在照片背面 | 是否将生成参数嵌入到图片文件中 | 开启后图片文件本身就包含生成信息 |
| counter_digits | counter_digits | 数字滑块 | 4 | 就像给照片编号时用几位数字 | 图片计数器的位数 | 设置为 3 会生成 001, 002, 003 这样的编号 |
| counter_position | counter_position | 下拉选择 | last | 就像编号写在照片名字前面还是后面 | 计数器在文件名中的位置 | 选择 "first" 会变成 "001_filename.webp" |
| one_counter_per_folder | one_counter_per_folder | 开关 | True | 已废弃的参数,保留是为了兼容性 | 废弃参数,保持默认即可 | 保持默认设置即可 |
| image_preview | image_preview | 开关 | True | 就像决定要不要在 ComfyUI 里预览图片 | 是否在界面中显示保存的图片预览 | 关闭可以节省界面空间 |
| output_ext | output_ext | 下拉选择 | .webp | 就像选择照片要冲印成什么格式 | 输出图片的文件格式 | 选择 ".avif" 可以获得更小的文件体积 |
| quality | quality | 数字滑块 | 90 | 就像调节照片的清晰度,数字越大越清晰但文件越大 | 图片压缩质量设置 | 设置为 100 会启用无损压缩(部分格式) |
| named_keys | named_keys | 开关 | False | 就像在标签前面写上标签名称 | 是否在参数值前加上参数名 | 开启后文件名会变成 "cfg=7.5-steps=20.webp" |
3.1.2 可选参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| positive_text_opt | positive_text_opt | 文本输入 | 可选连接 | 就像单独记录正面描述词 | 可选的正向提示词输入 | 连接 CLIP Text Encode 的正向提示词 |
| negative_text_opt | negative_text_opt | 文本输入 | 可选连接 | 就像单独记录负面描述词 | 可选的负向提示词输入 | 连接 CLIP Text Encode 的负向提示词 |
3.1.3 隐藏参数(自动处理)
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 通俗解释 | 专业解释 |
|---|---|---|---|---|
| prompt | prompt | 工作流数据 | 就像自动记录整个拍摄过程 | 自动获取的完整工作流信息 |
| extra_pnginfo | extra_pnginfo | 额外信息 | 就像自动记录额外的拍摄细节 | 自动获取的额外图片信息 |
3.1.4 输出参数
这个节点没有输出连接,它是一个"终点站"节点,专门负责保存图片。
4. 支持的文件格式详解
| 格式 | 扩展名 | 通俗解释 | 优缺点 | 建议使用场景 |
|---|---|---|---|---|
| AVIF | .avif | 最新的超压缩格式,就像最新款的压缩袋 | 文件最小,质量很好,但兼容性一般 | 追求最小文件体积时使用 |
| JXL | .jxl | 另一种新格式,压缩效果也很好 | 压缩好,但支持的软件很少 | 实验性使用 |
| WebP | .webp | 谷歌开发的格式,就像通用的压缩袋 | 压缩好,兼容性不错 | 日常使用推荐 |
| JPEG | .jpg/.jpeg | 最常见的照片格式 | 兼容性最好,但会损失质量 | 需要最大兼容性时使用 |
| PNG | .png | 无损格式,就像原版照片 | 质量最好,但文件很大 | 需要完美质量时使用 |
| JPEG2000 | .j2k/.jp2 | 高级 JPEG 格式 | 压缩好,但很少软件支持 | 专业用途 |
| GIF | .gif | 动图格式,但这里只保存静图 | 兼容性好,但颜色有限 | 特殊需求 |
| TIFF | .tiff | 专业图像格式 | 质量好,文件大 | 专业印刷 |
| BMP | .bmp | 最原始的格式 | 无压缩,文件巨大 | 基本不推荐 |
5. 文件名和文件夹命名技巧
5.1 可用的参数关键词
| 关键词 | 通俗解释 | 举例 |
|---|---|---|
| sampler_name | 采样器名称,就像拍照时用的相机模式 | euler, dpm_2m |
| scheduler | 调度器名称,就像拍照的节奏控制 | normal, karras |
| cfg | CFG 值,就像拍照时的对比度 | 7.5, 12.0 |
| steps | 步数,就像拍照时的处理次数 | 20, 50 |
| seed | 随机种子,就像每张照片的唯一 ID | 123456789 |
| denoise | 降噪强度 | 0.75, 1.0 |
| ckpt_name | 模型名称,就像使用的相机型号 | v1-5-pruned-emaonly |
| ckpt_path | 模型路径,就像相机存放的文件夹 | checkpoints/realistic |
| lora_name | LoRA 名称 | character_lora |
| lora_path | LoRA 路径 | loras/characters |
| vae_name | VAE 名称 | vae-ft-mse-840000-ema-pruned |
| resolution | 图片分辨率 | 512x512, 1024x1024 |
5.2 时间格式关键词
| 关键词 | 通俗解释 | 举例 |
|---|---|---|
| %F | 完整日期,就像 2024-12-18 | 2024-12-18 |
| %Y | 年份 | 2024 |
| %m | 月份 | 12 |
| %d | 日期 | 18 |
| %H | 小时(24小时制) | 14 |
| %M | 分钟 | 30 |
| %S | 秒 | 45 |
| %H-%M-%S | 时间格式 | 14-30-45 |
5.3 特殊用法
| 用法 | 通俗解释 | 举例 |
|---|---|---|
| 12.cfg | 指定节点编号,就像指定特定相机的设置 | 使用 12 号节点的 CFG 值 |
| /subfolder | 创建子文件夹 | cfg, /quality 会创建 quality 子文件夹 |
| "固定文字" | 固定字符串 | "test", cfg 会在文件名中加入 test |
| .extension | 特殊分隔符 | prefix.cfg 会用点号分隔 |
6. 使用技巧和建议
6.1 文件格式选择建议
- 日常使用:推荐 WebP,压缩好,兼容性不错
- 追求最小体积:使用 AVIF,质量 60-70 就够用
- 需要完美质量:使用 PNG 或质量 100 的 WebP
- 最大兼容性:使用 JPEG,质量 85-95
6.2 文件命名建议
- 简单命名:
filename_keys填写cfg, steps, sampler_name - 详细命名:
filename_keys填写ckpt_name, cfg, steps, sampler_name, %F %H-%M-%S - 按日期分类:
foldername_keys填写%Y/%m/%d - 按模型分类:
foldername_keys填写ckpt_name
6.3 质量设置建议
| 格式 | 推荐质量 | 说明 |
|---|---|---|
| AVIF | 60-70 | 相当于 WebP 90 的质量 |
| WebP | 85-95 | 平衡质量和体积 |
| JPEG | 85-95 | 避免过度压缩 |
| JXL | 80-90 | 新格式,效果很好 |
6.4 节省空间技巧
- 使用 AVIF 格式,质量设置 60-70
- 关闭
save_metadata可以稍微减小文件体积 - 使用
counter_digits为 0 可以不要编号 - 合理使用文件夹分类,避免单个文件夹文件过多
7. 常见问题解答
Q1:为什么有些格式保存失败?
A1: 可能原因:
- 没有安装对应的支持包(如 pillow-avif-plugin)
- 图片尺寸过大(WebP 不支持超过 12000x12000 像素)
- 系统不支持某些格式
Q2:文件名中出现乱码或特殊字符怎么办?
A2: 插件会自动清理非法字符,但如果还有问题:
- 避免在
filename_keys中使用特殊符号 - 检查模型名称是否包含特殊字符
- 使用英文字符作为分隔符
Q3:为什么计数器不连续?
A3: 这是正常的:
- 插件会找到文件夹中最大的编号,然后加 1
- 如果删除了中间的文件,编号会跳跃
- 这样设计是为了避免覆盖现有文件
Q4:保存的 JSON 文件有什么用?
A4: JSON 文件记录了:
- 生成图片时使用的所有参数
- 提示词内容
- 使用的模型信息
- 可以用来复现相同的生成效果
Q5:如何在文件名中使用中文?
A5: 可以使用固定字符串:
- 在
filename_keys中输入"测试图片", cfg, steps - 用引号包围中文内容
Q6:图片太大无法保存怎么办?
A6: 解决方法:
- 使用 PNG 格式(支持最大尺寸)
- 避免使用 WebP 保存超大图片
- 考虑先缩小图片再保存
8. 实际使用示例
示例1:基础使用
filename_prefix: MyArt
filename_keys: cfg, steps
foldername_keys: ckpt_name
output_ext: .webp
quality: 90
结果:checkpoints模型名/MyArt-7.5-20-0001.webp
示例2:详细命名
filename_prefix: 空
filename_keys: ckpt_name, cfg, steps, sampler_name, %F %H-%M-%S
foldername_keys: %Y/%m
output_ext: .avif
quality: 65
结果:2024/12/模型名-7.5-20-euler-2024-12-18 14-30-45-0001.avif
示例3:按质量分类
filename_prefix: 空
filename_keys: cfg, steps
foldername_keys: ckpt_name, /quality
output_ext: .webp
quality: 95
named_keys: True
结果:模型名/quality/cfg=7.5-steps=20-0001.webp
9. 高级功能
9.1 节点编号引用
如果你的工作流中有多个相同类型的节点,可以用编号指定:
12.cfg表示使用 12 号节点的 CFG 值5.sampler_name表示使用 5 号节点的采样器名称
9.2 路径和名称分离
对于模型文件,插件提供了两种选择:
ckpt_name:只要文件名,如 "v1-5-pruned-emaonly"ckpt_path:要文件夹路径,如 "realistic/photorealistic"
9.3 子文件夹创建
在 filename_keys 或 foldername_keys 中使用 / 可以创建子文件夹:
cfg, /quality, steps会创建 quality 子文件夹%Y/%m/%d会创建年/月/日的文件夹结构
10. 总结
这个插件功能非常强大,就像给 ComfyUI 装了一个专业的照片管理系统。通过合理设置参数,你可以:
- 自动分类:按模型、日期、参数自动分文件夹
- 智能命名:文件名自动包含重要参数信息
- 格式优化:选择最适合的图片格式节省空间
- 信息保存:完整记录生成参数,方便后续复现
所有节点都已完整分析完毕!这个插件虽然只有一个节点,但功能非常丰富,是 ComfyUI 用户必备的工具之一。掌握了这个插件,你的图片管理效率会大大提升!