Extensions/comfyui-save-image-pro
ComfyUI Extension

comfyui-save-image-pro

Professional-grade ComfyUI image saving plugin with support for multiple formats, custom naming, and advanced features.

By weekii·Created about a year ago·Updated 9 months ago· 5
weekii/comfyui-save-image-pro
Nodes3
On cloudLocal install
Categoryimage
Stars5
Updated9 months ago
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加载遮罩(支持通道选择)

基本使用

保存图像

  1. 在 ComfyUI 中搜索并添加 "comfyui-save-image-pro" 节点
  2. 连接图像输出到节点的 images 输入
  3. 配置保存参数(格式、文件名、文件夹等)
  4. 运行工作流,图像将按配置保存

从URL加载图像

  1. 搜索并添加 "Load Image from URL (Pro)" 节点
  2. 在 urls 输入框中输入图像URL(每行一个)
  3. 连接输出到其他节点使用
  4. 示例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 安装:

  1. 打开 ComfyUI Manager
  2. 搜索 "ComfyUI Save Image Pro"
  3. 点击安装并重启 ComfyUI

手动安装

  1. 进入 ComfyUI 的 custom_nodes 目录
  2. 克隆仓库:
git clone https://github.com/weekii/comfyui-save-image-pro.git
  1. 重启 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显示:

  1. 进入设置 (Settings)
  2. 启用 "Badge IDs" 选项
  3. 节点上会显示数字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: 性能问题

  • 启用缓存功能
  • 调整批量处理设置
  • 检查磁盘空间和内存

获取帮助

📋 更新日志

最新版本 (2025-10-28)

  • ✨ 新增 LoadImageFromURLPro 节点 - 从URL批量加载图像
  • ✨ 新增 LoadMaskFromURLPro 节点 - 从URL加载遮罩
  • 🔧 基于 comfyui-easyapi-nodes 实现,增强错误处理
  • ⚡ 添加30秒超时保护和详细日志
  • 📝 完善的文档和使用说明

重构版本

  • ✨ 完全重构的模块化架构
  • ⚡ 大幅性能提升和优化
  • 🧪 完整的单元测试覆盖
  • 📚 完善的文档系统
  • 🔧 改进的错误处理和日志
  • 🎯 保持完全向后兼容

🤝 贡献

欢迎贡献代码、报告问题或提出建议!

贡献方式

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

开发指南

  • 查看 开发者文档
  • 遵循现有的代码风格
  • 添加适当的测试
  • 更新相关文档

📄 许可证

本项目采用 GPL 3.0 许可证。

🙏 致谢

  • 原始项目灵感来自 @thedyze
  • 感谢 ComfyUI 社区的支持和反馈
  • 感谢所有贡献者的努力

ComfyUI Save Image Pro - 让图像保存更专业、更高效! 🚀