ComfyUI-Counternodes 插件完整教程
1. 插件简介
ComfyUI-Counternodes 是一个专门为 ComfyUI 设计的计数器节点插件包,包含一系列拥有内置计数器与根据计数器输出结果输出特定结果的ComfyUI节点,目的是为了在ComfyUI的前端实现文件夹的遍历功能。
插件原地址: https://github.com/GHOSTLXH/ComfyUI-Counternodes
这个插件能为我们做什么?
- 就像一个自动记数的小助手,能帮你按顺序处理图片
- 可以配合文本文件,让每张图片都有对应的描述词
- 能实现图片的轮换显示,比如 A 图片显示 3 次,然后 B 图片显示 1 次
- 特别适合批量处理图片时需要按特定规律操作的场景
2. 如何安装
有两种方法可以安装这个插件:
方法一:使用 Git 命令
- 打开命令行(Win+R,输入 cmd)
- 进入你的 ComfyUI 安装目录的 custom_nodes 文件夹
- 输入命令:
git clone https://github.com/GHOSTLXH/ComfyUI-Counternodes.git - 重启 ComfyUI
方法二:手动下载
- 访问 https://github.com/GHOSTLXH/ComfyUI-Counternodes
- 点击绿色的 "Code" 按钮,选择 "Download ZIP"
- 解压到你的 ComfyUI 安装目录下的 custom_nodes 文件夹
- 重启 ComfyUI
3. 节点详细解析
3.1 IntervalCounter A 节点 - 间隔计数器 A
这个节点就像一个可以设置规则的计数器,不是每次都加 1,而是要等特定的次数后才开始计数。
举个例子: 就像排队买奶茶,你设置每 3 个人过去后,队伍编号才加 1。
3.1.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 重置 | reset | 布尔值 (开/关) | 关 | 就像重启按钮,按下后计数器回到 0 | 节点重置功能,启用后节点内置计数器值将归零 | 当你想重新开始计数时,把这个开关打开 |
| 模式 | mode | increment/decrement/inc_to_max/dec_to_min | increment | 决定计数器是往上数还是往下数 | 计数器执行的模式 | increment=往上数,decrement=往下数 |
| 最小值 | min_value | 数字 | 0 | 计数器能数到的最小数字 | 最小可设定值 | 只在特定模式下有用,一般设为 0 |
| 最大值 | max_value | 数字 | 100 | 计数器能数到的最大数字 | 最大可设定值 | 只在特定模式下有用,根据需要设置 |
| 步长 | step | 数字 | 1 | 每次计数加多少 | 计数器执行的步数 | 设为 1 就是每次加 1,设为 2 就是每次加 2 |
| 触发间隔 | trigger_interval | 数字 | 1 | 多少次触发后才真正计数一次 | 内置计数器计算的触发间隔 | 设为 3 就是每 3 次触发后计数器才加 1 |
| 滴答 | tick | 数字 | 任意 | 用来保持节点活跃的信号 | 外接其他计数节点的端口 | 连接其他计数器节点,让这个节点不被忽略 |
3.2 Image Counter 节点 - 图片计数器
这个节点专门用来数图片,每当有图片经过时就触发计数。就像门口的访客计数器,每有人经过就记录一次。
3.2.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片 | image | 图片 | - | 要计数的图片 | 输入的目标图片 | 连接图片加载节点 |
| 触发器 | trigger | 任意 | - | 标识用的,不用连接 | 触发器标识 | 这个接口不用管,只是个标记 |
| 重置 | reset | 布尔值 (开/关) | 关 | 重新开始计数 | 重置布尔值 | 想重新开始计数时打开 |
| 递增值 | increment | 数字 | 1 | 每次计数加多少 | 计数器递增的数值 | 一般设为 1,特殊需求可以改 |
| 触发间隔 | trigger_interval | 数字 | 1 | 多少张图片后才计数一次 | 特定触发间隔 | 设为 3 就是每过 3 张图片计数器才加 1 |
3.3 Load Prompt TXT 节点 - 读取提示词文本
这个节点就像一个智能文件柜,根据你给的编号去找对应的文本文件内容。
3.3.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 索引 | index | 数字 | 0 | 要读取第几个文件 | 外接特定计数器节点传来的索引值 | 连接计数器节点,让它告诉我们读第几个文件 |
| 触发器 | trigger | 数字 | 0 | 用来激活节点的信号 | 触发节点的索引值 | 通常连接同一个计数器节点 |
| 目录 | directory | 文件路径 | 你的文件夹路径 | 存放文本文件的文件夹位置 | 包含txt文件的文件夹绝对路径 | 比如:C:\Users\用户名\Desktop\prompts\ |
3.4 IntervalCounter B 节点 - 间隔计数器 B(增强版)
这个节点是计数器 A 的增强版,多了一个可以用公式计算的功能。就像一个可以做数学题的计数器。
3.4.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 重置 | reset | 布尔值 (开/关) | 关 | 重新开始计数 | 节点重置功能 | 想重新开始时打开 |
| 模式 | mode | increment/decrement/inc_to_max/dec_to_min/expression | increment | 选择计数方式 | 计数器执行的模式 | expression 模式可以用公式计算 |
| 最小值 | min_value | 数字 | 0 | 计数器最小值 | 最小可设定值 | 在特定模式下有用 |
| 最大值 | max_value | 数字 | 100 | 计数器最大值 | 最大可设定值 | 在特定模式下有用 |
| 步长 | step | 数字 | 1 | 每次计数变化量 | 计数器执行的步数 | 正数往上数,负数往下数 |
| 触发间隔 | trigger_interval | 数字 | 1 | 多少次后才真正计数 | 触发间隔 | 控制计数频率 |
| 表达式 | expression | 文本 | 空 | 用公式计算结果 | Python数学表达式 | 比如:value*2+1(把当前值乘以2再加1) |
| 滴答 | tick | 数字 | 任意 | 保持节点活跃 | 外接计数节点的端口 | 连接其他计数器让节点不被忽略 |
3.5 Alternating Output A 节点 - 交替输出 A
这个节点就像一个有规律的红绿灯,按照你设定的规律轮流显示两张图片。
3.5.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片A | input_a | 图片 | - | 第一张备选图片 | 可输入的图片A | 连接你想要轮换的第一张图 |
| 图片B | input_b | 图片 | - | 第二张备选图片 | 可输入的图片B | 连接你想要轮换的第二张图 |
| 循环长度 | n | 数字 | 3 | 多少次算一个完整循环 | 完成一个图片交替输出循环的轮数 | 设为3就是:第一张图1次,第二张图2次的循环 |
| 首次输出 | first_output | input_a/input_b | input_a | 第一次显示哪张图 | 第一轮输出的图片 | 选择input_a就第一次显示图片A |
| 计数器 | counter | 数字 | 0 | 外接计数器的当前值 | 外接计数器节点的值 | 连接计数器节点来驱动图片切换 |
3.6 Alternating Output B 节点 - 交替输出 B(常用版)
这个节点和 A 版本类似,但是规律不同。就像另一种红绿灯模式。
3.6.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图片A | input_a | 图片 | - | 第一张备选图片 | 可输入的图片A | 连接你想要轮换的第一张图 |
| 图片B | input_b | 图片 | - | 第二张备选图片 | 可输入的图片B | 连接你想要轮换的第二张图 |
| 循环长度 | n | 数字 | 3 | 多少次算一个完整循环 | 完成一个图片交替输出循环的轮数 | 设为3就是:连续3次同一张图,然后换另一张1次 |
| 首次输出 | first_output | input_a/input_b | input_a | 第一次显示哪张图 | 第一轮输出的图片 | 选择input_a就先连续显示3次图片A |
| 计数器 | counter | 数字 | 0 | 外接计数器的当前值 | 外接计数器节点的值 | 连接计数器节点来驱动图片切换 |
4. 使用技巧和建议
4.1 基础组合技巧
图片批量处理组合:
- 用 Image Counter 节点计数图片
- 用 Load Prompt TXT 节点读取对应的提示词
- 用 IntervalCounter A 节点控制处理节奏
图片轮换显示:
- 用 IntervalCounter A 节点做计数器
- 用 Alternating Output B 节点控制图片切换
- 调整 n 值来改变切换规律
4.2 参数设置建议
新手建议:
- 触发间隔先设为 1,熟悉后再调整
- 步长保持 1,除非有特殊需求
- 重置功能在测试时很有用
进阶技巧:
- 表达式功能很强大,但要小心语法错误
- 多个计数器可以串联使用
- 注意 Windows 和 Linux 系统的路径格式不同
5. 常见问题解答
Q:计数器不工作怎么办?
A:检查是否连接了 tick 接口,这个接口需要连接其他计数器节点来保持活跃。
Q:图片轮换的规律搞不懂?
A:Alternating Output A 是:第一张图1次,第二张图(n-1)次的循环
Alternating Output B 是:第一张图(n-1)次,第二张图1次的循环
Q:文本文件读取不到?
A:检查文件路径是否正确,注意要用绝对路径,而且目前只支持 Windows 路径格式。
Q:表达式功能怎么用?
A:在 IntervalCounter B 节点中,expression 模式可以用 Python 数学表达式,比如:
value + 1:每次加1value * 2:每次乘以2value % 10:取余数,实现0-9循环
Q:重置功能什么时候用?
A:当你想重新开始计数时,或者在测试不同参数时,可以用重置功能清零计数器。
6. 实际应用场景
6.1 批量图片处理
假设你有100张图片和100个对应的提示词文件,你可以:
- 用 Image Counter 节点读取图片并计数
- 用 Load Prompt TXT 节点读取对应编号的提示词
- 实现图片和提示词的自动配对
6.2 轮播展示
如果你想做一个图片轮播效果:
- 用 IntervalCounter A 节点做计数器
- 用 Alternating Output B 节点控制两张图片的切换
- 设置不同的 n 值实现不同的轮播节奏
6.3 创意动画
结合多个计数器节点,可以创造复杂的动画效果:
- 用不同的触发间隔创建不同速度的计数器
- 用表达式功能实现复杂的数学变化
- 组合多个交替输出节点创建复杂的视觉效果
这个插件虽然看起来简单,但是组合使用可以创造出很多有趣的效果。建议从简单的组合开始练习,逐步掌握各个节点的特点,然后尝试更复杂的应用。