ComfyUI Extension: comfyui-save-image-pro
Professional-grade ComfyUI image saving plugin with support for multiple formats, custom naming, and advanced features.
Custom Nodes (0)
README
🚀 ComfyUI Save Image Pro
专业级图像保存插件
一个功能强大、高性能的 ComfyUI 图像保存插件,采用现代化模块架构设计,支持多种格式、自定义命名和高级功能。
✨ 主要特性
🎯 核心功能
- 多格式支持: PNG, WebP, JPEG, AVIF, JXL, TIFF, GIF, BMP
- 智能命名: 灵活的文件名和文件夹结构自定义
- 元数据保存: 完整的生成参数和提示词保存
- 作业数据导出: 详细的 JSON 格式生成信息
- 批量处理: 高效的多图像并行保存
- URL加载: 从远程URL批量加载图像和遮罩
⚡ 性能特性
- 智能缓存: 文件名生成和参数提取缓存机制
- 并行处理: 多线程批量保存优化
- 内存管理: 自动内存监控和清理
- 错误恢复: 完善的错误处理和日志系统
🏗️ 架构优势
- 模块化设计: 11个独立核心模块
- 策略模式: 灵活的格式处理策略
- SOLID原则: 高质量、可维护的代码架构
- 完整测试: 全面的单元测试覆盖
📖 快速开始
可用节点
本插件提供以下节点:
- SaveImageAdvanced: 高级图像保存节点(完整功能)
- SaveImageSimple: 简化图像保存节点(常用功能)
- LoadImageFromURLPro: 从URL加载图像(支持批量)
- LoadMaskFromURLPro: 从URL加载遮罩(支持通道选择)
基本使用
保存图像
- 在 ComfyUI 中搜索并添加 "comfyui-save-image-pro" 节点
- 连接图像输出到节点的 images 输入
- 配置保存参数(格式、文件名、文件夹等)
- 运行工作流,图像将按配置保存
从URL加载图像
- 搜索并添加 "Load Image from URL (Pro)" 节点
- 在 urls 输入框中输入图像URL(每行一个)
- 连接输出到其他节点使用
- 示例URL格式:
https://example.com/image1.png
https://example.com/image2.jpg
配置示例
基础配置
filename_prefix: "AI_Art"
filename_keys: "sampler_name, steps, %H-%M-%S"
output_format: ".webp"
quality: 85
生成文件名: AI_Art-euler-20-14-30-25_0001.webp
高级配置
filename_keys: "5.ckpt_name, sampler_name, cfg, steps, %F"
foldername_keys: "%Y/%m, 5.ckpt_name"
delimiter: "_"
counter_position: "first"
生成路径: 2024/01/sd_xl_base/0001_sd_xl_base_euler_7.5_20_2024-01-15.webp
⚙️ 参数说明
文件命名参数
| 参数 | 描述 | 示例 |
| --- | --- | --- |
| filename_prefix | 文件名前缀 | "ComfyUI", "AI_Art" |
| filename_keys | 文件名组成元素,逗号分隔 | "sampler_name, cfg, steps" |
| delimiter | 文件名元素间的分隔符 | "-", "_", "." |
文件夹参数
| 参数 | 描述 | 示例 |
| --- | --- | --- |
| foldername_prefix | 文件夹名前缀 | "outputs", "generated" |
| foldername_keys | 文件夹名组成元素 | "ckpt_name", "%Y/%m/%d" |
格式和质量
| 参数 | 描述 | 选项 |
| --- | --- | --- |
| output_format | 输出格式 | .webp, .png, .jpg, .avif, .jxl 等 |
| quality | 图像质量 (1-100) | 75 (推荐), 100 (无损) |
高级选项
| 参数 | 描述 | 选项 |
| --- | --- | --- |
| save_metadata | 保存元数据到图像 | true/false |
| save_job_data | 作业数据保存级别 | disabled, basic, models, prompt |
| counter_digits | 计数器位数 | 4 (默认), 1-10 |
| counter_position | 计数器位置 | last, first |
🔧 高级功能
参数引用系统
可以在文件名中引用工作流中的任何参数:
# 基本参数引用
sampler_name, cfg, steps
# 节点参数引用 (节点ID.参数名)
5.seed, 3.ckpt_name
# 时间格式
%Y-%m-%d, %H-%M-%S
时间格式支持
支持 Unix 时间格式:
| 格式 | 示例 | 说明 |
| --- | --- | --- |
| %F 或 %Y-%m-%d | 2024-05-22 | 完整日期 |
| %H-%M-%S | 09-13-58 | 时间 |
| %Y/%m/%d | 2024/05/22 | 创建日期子文件夹 |
| %Y/%V | 2024/21 | 年份/ISO周数 |
文件夹结构
支持创建复杂的文件夹结构:
# 基本文件夹
ckpt_name
# 按日期分类
%Y/%m/%d
# 混合结构
models/ckpt_name/%F
📦 安装说明
自动安装 (推荐)
通过 ComfyUI Manager 安装:
- 打开 ComfyUI Manager
- 搜索 "ComfyUI Save Image Pro"
- 点击安装并重启 ComfyUI
手动安装
- 进入 ComfyUI 的
custom_nodes目录 - 克隆仓库:
git clone https://github.com/weekii/comfyui-save-image-pro.git
- 重启 ComfyUI
依赖安装
基础依赖会自动安装,可选格式需要额外安装:
# AVIF 支持
pip install pillow-avif-plugin
# JXL 支持 (需要 MSVC 编译环境)
pip install jxlpy
# URL加载功能(通常已安装)
pip install requests
系统要求
- Python 3.8+
- ComfyUI 最新版本
- 足够的磁盘空间用于图像保存
- 网络连接(用于URL加载功能)
🎨 格式支持和优化建议
支持的格式
| 格式 | 特点 | 推荐用途 | 质量建议 | | --- | --- | --- | --- | | WebP | 平衡质量和大小 | 日常使用 | 75-85 | | PNG | 无损质量 | 需要透明度 | N/A | | JPEG | 最小文件大小 | 快速分享 | 85-95 | | AVIF | 最新格式,优秀压缩 | 高质量存储 | 60-70 | | JXL | 下一代格式 | 专业用途 | 80-90 | | TIFF | 专业标准 | 印刷用途 | 90-100 |
性能优化建议
- 批量保存: 插件自动使用多线程处理大批量图像
- 缓存机制: 文件名生成和参数提取会被缓存以提高性能
- 内存管理: 自动监控和清理内存使用
- 格式选择: WebP 通常是质量和大小的最佳平衡
元数据支持
插件支持在图像中保存完整的生成信息:
- PNG: 使用 PngInfo 保存提示词和工作流
- JPEG/WebP/AVIF: 使用 EXIF 标签保存元数据
- 兼容性: 与 WAS Node Suite 等其他插件兼容
节点ID显示
要使用节点参数引用功能,需要在 ComfyUI 中启用节点ID显示:
- 进入设置 (Settings)
- 启用 "Badge IDs" 选项
- 节点上会显示数字ID,可用于参数引用
🌐 URL加载功能
LoadImageFromURLPro 节点
从远程URL批量加载图像。
功能特点:
- ✅ 支持批量加载多个URL(每行一个)
- ✅ 自动处理EXIF旋转
- ✅ 自动提取Alpha通道作为遮罩
- ✅ 支持多种图像格式(PNG, JPEG, WebP, GIF等)
- ✅ 30秒超时保护
- ✅ 完善的错误处理和日志
输入参数:
urls(STRING): 图像URL地址,每行一个
输出:
images(IMAGE列表): 加载的图像张量masks(MASK列表): 对应的遮罩张量
使用示例:
https://example.com/image1.png
https://example.com/image2.jpg
https://picsum.photos/512/512
LoadMaskFromURLPro 节点
从远程URL加载遮罩图像,支持选择颜色通道。
功能特点:
- ✅ 从指定颜色通道提取遮罩
- ✅ Alpha通道自动反转
- ✅ 批量处理支持
输入参数:
urls(STRING): 图像URL地址,每行一个channel(ENUM): 颜色通道选择(red/green/blue/alpha)
输出:
masks(MASK列表): 提取的遮罩张量
注意事项
- 确保URL可访问且返回有效的图像数据
- 大文件可能需要较长的加载时间
- 建议使用稳定的网络连接
- 空行会被自动忽略
与 comfyui-easyapi-nodes 的区别
如果你的系统中同时安装了 comfyui-easyapi-nodes,请注意:
- 原版节点:
LoadImageFromURL(来自 easyapi-nodes) - Pro版节点:
LoadImageFromURLPro(来自本插件)
Pro版本提供了更好的错误处理、超时保护和详细日志记录。
🚀 重构亮点
架构升级
- 模块化设计: 从单一文件重构为11个专业模块
- SOLID原则: 遵循软件工程最佳实践
- 策略模式: 灵活的格式处理架构
- 完整测试: 全面的单元测试覆盖
性能提升
- 智能缓存: 50-70% 文件名生成性能提升
- 并行处理: 30-50% 批量保存性能提升
- 内存优化: 20-30% 内存使用减少
- 错误恢复: 完善的错误处理机制
开发体验
- 完整文档: 用户手册和开发者文档
- 易于扩展: 新增格式和功能更简单
- 向后兼容: 现有工作流无需修改
�️ 故障排除
常见问题
Q: 图像保存失败
- 检查输出目录权限
- 确认文件名不包含非法字符
- 查看 ComfyUI 控制台错误信息
Q: 参数引用不工作
- 确保启用了节点ID显示
- 检查节点ID和参数名是否正确
- 使用格式:
节点ID.参数名
Q: 某些格式不支持
- 安装对应的依赖包
- 检查系统兼容性
- 查看支持的格式列表
Q: 性能问题
- 启用缓存功能
- 调整批量处理设置
- 检查磁盘空间和内存
获取帮助
- 查看 用户手册
- 查看 开发者文档
- 提交 GitHub Issues
📋 更新日志
最新版本 (2025-10-28)
- ✨ 新增 LoadImageFromURLPro 节点 - 从URL批量加载图像
- ✨ 新增 LoadMaskFromURLPro 节点 - 从URL加载遮罩
- 🔧 基于 comfyui-easyapi-nodes 实现,增强错误处理
- ⚡ 添加30秒超时保护和详细日志
- 📝 完善的文档和使用说明
重构版本
- ✨ 完全重构的模块化架构
- ⚡ 大幅性能提升和优化
- 🧪 完整的单元测试覆盖
- 📚 完善的文档系统
- 🔧 改进的错误处理和日志
- 🎯 保持完全向后兼容
🤝 贡献
欢迎贡献代码、报告问题或提出建议!
贡献方式
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
开发指南
- 查看 开发者文档
- 遵循现有的代码风格
- 添加适当的测试
- 更新相关文档
📄 许可证
本项目采用 GPL 3.0 许可证。
🙏 致谢
- 原始项目灵感来自 @thedyze
- 感谢 ComfyUI 社区的支持和反馈
- 感谢所有贡献者的努力
ComfyUI Save Image Pro - 让图像保存更专业、更高效! 🚀