Skip to content

Latest commit

 

History

History
247 lines (198 loc) · 12.6 KB

File metadata and controls

247 lines (198 loc) · 12.6 KB

ComfyUI Image Anything

English | 中文 | 日本語 | 한국어

GitHub stars License: MIT ComfyUI Python

ComfyUI Image Anything 提供三大核心功能:

  1. 批量保存工作流输出:在一次任务运行中批量保存不同阶段的图片和文本,自动整理到统一的时间戳文件夹中。通过模块化设计(Image Batch + Text Batch + BatchImageSaverV2),你可以灵活组合任意数量的图片批次和文本批次。

  2. 数据集自动标注:专为制作图像编辑模型(如 Qwen Edit、Kontext)训练数据集设计。提供自动迭代加载、结构化保存、失败重跑等功能,大幅提升数据集制作效率。

  3. 图片文件夹迭代器:从指定文件夹中逐张加载图片并执行工作流,配合 Auto Queue 实现全自动批量处理。支持递归扫描子文件夹、提取文件名、自定义保存路径,适合批量图片处理场景。

安装方法

方式一:克隆仓库

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/HuangYuChuh/ComfyUI_Image_Anything.git

方式二:ComfyUI Manager(推荐)

在 ComfyUI Manager 中搜索 "ComfyUI_Image_Anything" 并安装。

节点参数详解

1. 自动数据集标注 (Edit_Image)

这些是专为自动化制作模型数据集(如 Qwen Edit、Kontext 等)设计的新节点。

EditDatasetLoader:

  • input_dir (必需): 图片文件夹路径
  • start_index (必需): 起始索引(默认:0)
  • auto_next (可选): 自动递增索引(默认:True),关闭后固定读取 start_index
  • reset_iterator (可选): 强制重置索引到 start_index(默认:False)
  • index_list (可选): 逗号分隔的索引列表,如 "5,12,23"。用于重新处理失败的图片,填写后只加载指定索引的图片。
  • 自动停止: 当遍历完文件夹中所有图片(或指定索引)后,会自动触发停止信号终止工作流。

EditDatasetSaver:

  • output_root (必需): 保存根目录
  • naming_style (必需):
    • Keep Original: 保持原文件名
    • Rename (Prefix + Auto-Inc): 使用前缀+自动序号
  • filename_prefix: 重命名时的前缀(默认:"Dataset")
  • allow_overwrite (新增): 是否允许覆盖已有文件。开启后配合 index_list 使用,可自动覆盖错误的数据对。
  • filename_stem: 原始文件名(可选,连接 Loader 的输出)
  • save_image_control/target: 输入图片(可选)
  • save_caption: 输入文本标题(可选)
  • save_format: 保存格式(可选,支持 jpg/png/webp,默认 jpg)
  • output_dir: 强制输出路径(可选)。连接此端口将忽略 output_root,优先使用传入的路径。

高级功能:配对数据加载 (Paired Data Loading)

支持加载训练常用的 "Target Image + Control Image" 数据对。

参数设置:

  • target_img_suffix: Target 图片的后缀(如 _O)。填写后,通过 target_img 端口输出。
  • control_img_suffix: Control 图片的后缀(如 _W)。填写后,通过 control_img 端口输出。

逻辑: 加载器会自动筛选包含 target_img_suffix 的图片,并自动查找对应 control_img_suffix 的配对文件。 例如:填 _O_W。加载 Dog_O.jpg 时,自动找到 Dog_W.png 并作为 control 输出。

Outputs:

  • control_img: 原图/条件图 (对应 _W),推荐放在上面
  • target_img: 目标图 (对应 _O)。
  • target_img: 目标图 (对应 _O)。
  • filename_stem: 文件名(已自动去除后缀)。例如加载 A_O.jpg,这里输出 A。这使得 Saver 可以直接保存为干净的文件名。
  • filename_stem: 文件名(已自动去除后缀)。例如加载 A_O.jpg,这里输出 A。这使得 Saver 可以直接保存为干净的文件名。
  • directory: 当前图片的文件夹路径。
  • current_index: 当前图片的索引值 (int)。

EditDatasetSaver更新: 无需任何额外设置。只要 EditDatasetLoader 获取到了干净的 filename_stem,Saver 就会自动以该名字保存所有输出文件(Control/Target/Txt),确保文件名一致。 若要路径透传,可将 directory 连接到 Saver 的 output_dir

2. V2 模块化批量保存 (Batch_Save)

Image Batch 节点 (image_batch)

  • image_1 到 image_5 (可选): 最多5张图片输入
  • save_name_1 到 save_name_5 (可选): 对应每张图片的保存名称

Text Batch 节点 (text_batch)

  • text_1 到 text_5 (可选): 5个通用文本字段,可输入任意内容
  • name_1 到 name_5 (可选): 对应每个文本的文件名

Batch Image Saver V2 主节点

  • output_folder (必需): 输出文件夹名称(默认:"batch_saves")
  • enabled (可选): 是否启用此节点(默认:true)
  • batch_1, batch_2, ... (必需): 连接 Image Batch 节点的输出
  • text_batch_1, text_batch_2, ... (可选): 连接 Text Batch 节点的输出

V1 版本 (Batch Image Saver V1)

(保留用于向后兼容,建议使用 V2)

  • input_count (必需): 图片数量(1-5)
  • image_1 (必需): 第一张图片
  • save_name_1 (必需): 第一张图片的保存名称(默认:"image")
  • output_folder (必需): 输出文件夹名称(默认:"batch_saves")

使用示例

场景一:自动标注数据集流程 (Edit Dataset Workflow)

这是一个专门用于构建和标注图像编辑模型数据集的流程:

  1. 加载图片: 使用 EditDatasetLoader 指向你的图片文件夹。
  2. 处理流程: 在中间连接任意的处理节点(如图像反推提示词、抠图、风格迁移等)。
  3. 保存结果: 连接 EditDatasetSaver
    • Output Root: 设置保存结果的根目录。
    • Naming Style:
      • 想要保持文件名不变?选 Keep Original 并连接 loader 的 filename_stem
      • 想要统一重命名?选 Rename (Prefix + Auto-Inc) 并设置前缀(如 Dataset)。
    • Auto Increment: 即使中断重启,"Rename" 模式也会自动检测已有文件,从下一个序号开始保存,不会覆盖旧数据

高级技巧:重跑失败图片

当发现某些图片(如索引 5, 12, 23)处理失败时,无需重跑整个数据集:

  1. Loader 设置
    • index_list: 填入 "5,12,23"
    • reset_iterator: 开启(确保从列表第一个开始)。
  2. Saver 设置
    • allow_overwrite: 开启 True(允许覆盖旧的错误结果)。
  3. 运行:节点只处理这 3 张图片,完成后自动停止。

场景二:多批次组合保存 (V2)

[图片1-5] → [Image Batch A] → batch_1 → \
[文本A] → [Text Batch A] → text_batch_1 →  → [Batch Image Saver V2]
[图片6-7] → [Image Batch B] → batch_2 → /
[文本B] → [Text Batch B] → text_batch_2 → /

3. 图片文件夹迭代器 (Iterator)

Image Iterator 从指定文件夹中逐张迭代加载图片,每次执行加载一张,配合 ComfyUI 的 Auto Queue 模式可自动遍历整个文件夹。支持递归扫描子文件夹,并输出子文件夹路径以便保存时保持原始目录结构。

参数:

  • folder_path (必需): 图片文件夹的绝对路径
  • sort_by (必需): 排序方式(name_asc / name_desc / modified_asc / modified_desc)
  • mode (必需): 迭代模式
    • sequential: 遍历完所有图片后自动停止
    • loop: 循环迭代
  • recursive (必需): 是否递归扫描子文件夹(默认:False)
    • Subfolders Off: 仅扫描当前文件夹中的图片
    • Subfolders On: 递归扫描所有子文件夹中的图片
  • start_index (可选): 起始索引,可跳转到指定位置(默认:0)
  • reset (可选): 重置迭代器到起始位置(默认:False)

输出:

  • image: 当前图片
  • mask: 图片遮罩(支持透明通道)
  • filename: 文件名(不含扩展名)
  • filename_with_ext: 完整文件名(含扩展名)
  • subfolder: 图片相对于根文件夹的子目录路径(非递归模式下为空字符串)
  • current_index: 当前索引
  • total_count: 图片总数

Image Saver 保存处理后的图片,支持自定义路径和文件名,可配合 Image Iterator 使用。

参数:

  • image (必需): 处理后的图片
  • save_path (必需): 保存路径(绝对路径),留空则保存到 ComfyUI 默认输出目录
  • filename (可选): 文件名(不含扩展名),可从 Image Iterator 连接。留空则使用 ComfyUI 默认命名
  • subfolder (可选): 子文件夹路径,可从 Image Iterator 的 subfolder 输出连接。连接后保存时会自动在 save_path 下创建对应的子目录结构

基本使用:

[Image Iterator] ──→ [处理节点] ──→ [Image Saver]
      └── filename ──────────────────→ filename

开启 ComfyUI 的 Auto Queue 模式,点击 Queue Prompt 即可自动逐张处理文件夹中的所有图片。

递归扫描 + 保持目录结构:

[Image Iterator (recursive=True)] ──→ [处理节点] ──→ [Image Saver]
      ├── filename ───────────────────────────────────→ filename
      └── subfolder ──────────────────────────────────→ subfolder

开启 Subfolders On 后,迭代器会递归扫描所有子文件夹。将 subfolder 输出连接到 Image Saver,保存时会自动保持原始目录结构。例如:

源文件夹:

/input/
  ├── cats/
  │   ├── cat1.png
  │   └── cat2.png
  └── dogs/
      └── dog1.png

保存结果(save_path 设为 /output/):

/output/
  ├── cats/
  │   ├── cat1.png
  │   └── cat2.png
  └── dogs/
      └── dog1.png

4. 文本阻塞器 (Text)

Text Blocker

工作流中的文本中转编辑节点。当执行到此节点时,会弹出侧边编辑面板,让你修改上游传入的文本后再继续执行。非常适合需要人工检查或微调提示词的场景。

参数:

  • text (必需): 从上游节点连接输入的文本(无widget输入框,强制接收连接)
  • enabled (可选): 是否启用阻塞编辑(默认:True)
    • True: 执行时弹出编辑框,等待用户确认
    • False: 直接透传文本,不阻塞

使用场景:

[LLM生成提示词] ──→ [Text Blocker] ──→ [KSampler/图像生成]

执行时会在右侧弹出编辑面板,可以预览和修改LLM生成的提示词,确认后继续生成图像。

输出文件结构

每次运行都会创建独立的时间戳文件夹:

output/
└── batch_saves/
    └── task_20251130_143022/
        ├── 封面_01.png          # 保存名称_序号.png 格式
        ├── 细节_02.png
        ├── prompt.txt           # ComfyUI Prompt 文本(如果有)
        ├── metadata.json        # 基本元数据(包含格式化文本)
        └── workflow.json        # 完整工作流文件(可直接加载)

节点查找

安装后,在节点列表中查找(所有节点带有 🚦 标识):

分类 路径 节点
数据集 🚦 ComfyUI_Image_AnythingEdit_Image EditDatasetLoader, EditDatasetSaver
批量保存 🚦 ComfyUI_Image_AnythingBatch_Save Batch Image Saver V2, Image Collector, Text Collector
迭代器 🚦 ComfyUI_Image_AnythingIterator Image Iterator, Image Saver
文本工具 🚦 ComfyUI_Image_AnythingText Text Blocker

Star History

Star History Chart