WWAA-CustomNodes 插件完整教程
1. 插件简介
WWAA-CustomNodes 是由 WeirdWonderfulAI.Art 团队开发的 ComfyUI 插件包,插件地址:https://github.com/hgabha/WWAA-CustomNodes
这个插件就像是给 ComfyUI 添加了一套实用的小工具,主要解决日常使用中遇到的各种小问题。比如你想要批量处理图片、想要给文字加点前缀后缀、想要做出复古游戏的效果、想要读取文本文件等等。总共包含了 8 个不同功能的节点,每个都有自己的用途。
2. 如何安装
方法一:通过 ComfyUI-Manager 安装(推荐)
- 打开 ComfyUI,点击右下角的 "Manager" 按钮
- 在弹出的窗口中选择 "Install Custom Nodes"
- 在搜索框中输入 "WWAA"
- 找到 "WWAA-CustomNodes" 点击安装
- 重启 ComfyUI 即可使用
方法二:手动安装
- 在 ComfyUI 的
custom_nodes文件夹中打开命令行 - 运行命令:
git clone https://github.com/hgabha/WWAA-CustomNodes.git - 重启 ComfyUI 即可使用
3. 节点详细解析
3.1 WWAA String List Line Counter 节点
这个节点就像是一个文本行数计数器,你给它一堆文字,它会告诉你总共有多少行(空行不算)。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本列表 | string_list | 字符串列表 | 按需输入 | 就像把一叠纸交给计数器,让它数有多少张有字的纸 | 接收字符串列表输入,统计非空行数量 | 把提示词列表连接到这里,它会告诉你有多少条有效提示词 |
输出:
- 行数:返回一个数字,告诉你有多少行有内容的文字
3.2 WWAA Pre Post Text 节点
这个节点就像是一个文字包装机,可以给你的文字前面加个开头,后面加个结尾,最后打包成一个完整的句子。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 主文本 | text | 字符串 | 按需输入 | 这是你想要装饰的核心文字,就像三明治的夹心 | 主要文本内容 | 输入"beautiful girl"作为主要内容 |
| 前缀文本 | prefix_text | 字符串 | 按需输入 | 在主文本前面加的开头语,就像给文字戴帽子 | 添加到主文本前面的文字 | 输入"a photo of"作为开头 |
| 后缀文本 | suffix_text | 字符串 | 按需输入 | 在主文本后面加的结尾语,就像给文字穿鞋子 | 添加到主文本后面的文字 | 输入"in studio lighting"作为结尾 |
输出:
- 完整文本:返回组合后的完整文字,比如"a photo of beautiful girl in studio lighting"
3.3 WWAA Dithering 节点
这个节点就像是一个复古滤镜,能把现代的彩色图片变成老式电脑或游戏机的颗粒感效果。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图片 | image | 图片张量 | 必须连接 | 就像把一张现代照片放到复古相机里 | 接收图片数据进行处理 | 连接任何图片输入 |
| 抖动算法 | dithering_method | 下拉选项 | 根据效果选择 | 选择不同的颗粒化方式,就像选择不同的滤镜效果 | 选择抖动算法类型 | 选择"Floyd-Steinberg"获得经典效果 |
| 颜色数量 | colors | 数字滑块 | 2-16 | 决定图片用几种颜色,数字越小越像老游戏 | 限制输出图片的颜色数量 | 设置为4获得Game Boy风格 |
| 颜色模式 | color_mode | 下拉选项 | 根据需要选择 | 选择用什么颜色来表现,比如黑白、彩色等 | 选择颜色输出模式 | 选择"grayscale"获得黑白效果 |
输出:
- 处理后图片:返回带有复古颗粒效果的图片
3.4 WWAA Image Batch Loader 节点
这个节点就像是一个自动翻页器,能从一个文件夹里按顺序一张张地加载图片,还能记住读到哪一张了。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 目录路径 | directory_path | 文件路径 | 按需输入 | 告诉节点去哪个文件夹找图片,就像给邮递员地址 | 指定包含图片的目录路径 | 输入"C:/images"或相对路径 |
| 文件类型 | file_extension | 下拉选项 | "ALL" | 选择要加载哪种图片格式,就像选择只要JPG或PNG | 过滤特定文件类型 | 选择"PNG"只加载PNG图片 |
| 重置索引 | reset_index | 布尔值 | False | 重新从第一张开始读,就像把书翻回第一页 | 是否重置计数器到0 | 设为True从头开始读取 |
| 排序方式 | sort_method | 下拉选项 | "numerical" | 决定按什么顺序读图片,就像整理相册的方式 | 文件排序方法 | 选择"numerical"按数字顺序 |
| 重新加载目录 | reload_directory | 布尔值 | False | 重新扫描文件夹,就像刷新文件夹看有没有新图片 | 是否强制重新扫描目录 | 添加新图片后设为True |
输出:
- 图片:当前加载的图片
- 当前索引:现在读到第几张图片了
- 总图片数:文件夹里总共有多少张图片
- 文件名:当前图片的文件名
3.5 WWAA LLM Prompt To Text File 节点
这个节点就像是一个文字收集器,能把多个提示词收集起来,整理后写到一个文本文件里,每个提示词占一行。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本内容 | text | 字符串 | 按需输入 | 你想要保存的文字内容,就像给日记本写内容 | 要写入文件的主要文本内容 | 输入AI生成的图片描述 |
| 输出路径 | output_path | 文件路径 | 留空使用默认 | 告诉节点把文件保存在哪里,就像选择存档位置 | 指定文件保存目录 | 输入"D:/prompts"或留空 |
| 文件名 | filename | 字符串 | "output.txt" | 给保存的文件起个名字,就像给文档命名 | 输出文件的名称 | 输入"my_prompts.txt" |
| 前缀文本 | prefix_text | 字符串 | 按需输入 | 在每行文字前面加的标记,就像给每条笔记加序号 | 添加到每行开头的文字 | 输入"Prompt: "作为标记 |
输出:
- 日志输出:显示操作结果和详细信息
3.6 WWAA Prompt To Image File 节点
这个节点就像是一个文件管理员,专门负责给图片配上对应的文字说明文件,特别适合训练AI模型时使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文本内容 | text | 字符串 | 按需输入 | 要写入的文字描述,就像给图片写说明 | 要写入文件的文本内容 | 输入"a beautiful sunset over the ocean" |
| 图片文件名 | image_filename | 字符串 | 按需输入 | 对应图片的文件名,用来生成文本文件名 | 相关图片文件的名称 | 输入"sunset001.jpg" |
| 输出路径 | output_path | 文件路径 | 留空使用默认 | 文件保存的位置,就像选择存档文件夹 | 自定义输出目录路径 | 输入训练数据集的路径 |
| 覆盖文件 | overwrite | 布尔值 | False | 如果文件已存在是否替换,就像覆盖保存 | 是否覆盖已存在的文件 | 需要更新时设为True |
| 前缀文本 | prefix_text | 字符串 | 按需输入 | 在描述前加的触发词,就像给每张图片加标签 | 添加到文本开头的内容 | 输入"sks girl"作为训练触发词 |
| 子目录 | subdirectory | 字符串 | 按需输入 | 在输出路径下创建子文件夹,就像分类整理 | 输出路径下的子目录 | 输入"prompts"进行分类 |
输出:
- 日志输出:显示操作详情和结果
3.7 WWAA Text File Reader 节点
这个节点就像是一个智能阅读器,能从文本文件里按不同方式读取内容,比如从头到尾、从尾到头、或者随机读取。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 文件路径 | file_path | 文件路径 | 按需输入 | 告诉节点要读哪个文件,就像指定要看的书 | 要读取的文本文件路径 | 输入"prompts.txt"的完整路径 |
| 遍历模式 | traversal_mode | 下拉选项 | "forward" | 选择怎么读文件,正着读、倒着读还是随机读 | 文件遍历方式 | 选择"random"随机读取行 |
| 跳过行数 | skip_lines | 数字滑块 | 0 | 每次读取时跳过几行,就像翻几页再读 | 额外跳过的行数 | 设为1跳过一行读下一行 |
| 重置计数器 | reset_counter | 布尔值 | False | 重新从头开始读,就像把书翻回第一页 | 是否重置行计数器 | 需要重新开始时设为True |
| 重新加载文件 | reload_file | 布尔值 | False | 重新读取文件内容,就像刷新文档看有没有更新 | 是否强制重新加载文件 | 文件内容更新后设为True |
| 起始索引 | starting_index | 数字滑块 | 0 | 从第几行开始读,就像指定从第几页开始看 | 自定义起始位置 | 想从第10行开始就输入10 |
输出:
- 当前行:读取到的文本内容
- 当前行号:现在读到第几行了
- 总行数:文件总共有多少行
- 剩余行数:还有多少行没读完
3.8 WWAA Game Boy Camera 节点
这个节点就像是一个时光机,能把现代图片变成1998年任天堂Game Boy相机的复古效果,带着经典的绿色调和颗粒感。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 输入图片 | image | 图片张量 | 必须连接 | 要变成Game Boy风格的图片,就像把照片放进老式相机 | 接收图片数据进行处理 | 连接任何图片输入 |
| 显示模式 | mode | 下拉选项 | "gameboy_green" | 选择颜色风格,灰度还是经典绿色 | 色彩模式选择 | 选择"gameboy_green"获得经典效果 |
| 分辨率 | resolution | 下拉选项 | "1x_gameboy" | 选择Game Boy的分辨率大小,就像选择相机的像素 | 处理分辨率设置 | 选择"1x_gameboy"获得原始效果 |
| 放大倍数 | upscale_factor | 数字滑块 | 5 | 最后把图片放大多少倍,数字越大图片越大 | 最终像素放大倍数 | 设为5获得清晰的像素块效果 |
输出:
- 处理后图片:带有Game Boy Camera经典效果的图片
3.9 WWAA Nested Loop Counter 节点
这个节点就像是一个双重计数器,能同时管理两个计数器,就像嵌套的循环一样工作,适合需要重复处理的复杂任务。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 最大值 | max_value | 数字滑块 | 10 | 两个计数器的最大数值,就像设定倒计时的最大数字 | 内外循环的最大计数值 | 设为10表示从0数到10 |
| 增量 | increment | 数字滑块 | 1 | 每次计数器增加多少,就像设定步长 | 计数器递增的步长 | 设为2表示每次加2 |
| 重置 | reset | 布尔值 | False | 把两个计数器都重新归零,就像重新开始计数 | 是否强制重置计数器 | 需要重新开始时设为True |
输出:
- i:外层计数器的当前值(整数)
- j:内层计数器的当前值(整数)
- i_float:外层计数器的当前值(小数)
- j_float:内层计数器的当前值(小数)
- 调试日志:显示计数器状态的详细信息
4. 使用技巧和建议
4.1 批量处理图片的最佳搭配
将 WWAA Image Batch Loader 和 WWAA Prompt To Image File 组合使用,可以实现批量为图片生成描述文件,这在训练AI模型时非常有用。
4.2 文本处理的高效流程
使用 WWAA Text File Reader 读取提示词文件,配合 WWAA Pre Post Text 添加修饰词,再用 WWAA LLM Prompt To Text File 保存结果,形成完整的文本处理流程。
4.3 复古效果的叠加使用
WWAA Dithering 和 WWAA Game Boy Camera 可以分别使用,创造不同的复古效果。Game Boy Camera 更适合模拟特定设备,而 Dithering 提供更多自定义选项。
4.4 循环处理的实用场景
WWAA Nested Loop Counter 特别适合需要生成大量变体的场景,比如测试不同参数组合、批量生成图片等。
5. 常见问题解答
Q1: 为什么 Image Batch Loader 读取不到图片?
A: 检查以下几点:
- 确保目录路径正确
- 确认文件夹中确实有对应格式的图片
- 尝试将 reload_directory 设为 True 重新扫描
Q2: Game Boy Camera 效果不明显怎么办?
A: 建议调整以下参数:
- 使用 1x_gameboy 分辨率获得最佳效果
- 将 upscale_factor 设为 5 或更高
- 选择 gameboy_green 模式获得经典效果
Q3: 文本文件读取出现乱码怎么解决?
A: 确保文本文件使用 UTF-8 编码保存,如果仍有问题,可以尝试重新保存文件。
Q4: Nested Loop Counter 的计数逻辑是什么?
A: 内层计数器(j)先增加,达到最大值后归零,外层计数器(i)增加1。当外层也达到最大值时,两个计数器都归零重新开始。
Q5: 如何提高 Dithering 效果的质量?
A: 建议:
- 使用较低的颜色数量(2-8色)获得更明显的效果
- 选择合适的抖动算法,Floyd-Steinberg 通常效果最好
- 输入图片的对比度要足够
6. 实际应用场景
6.1 AI 模型训练数据准备
使用 Image Batch Loader 批量读取图片,结合 AI 描述生成节点,再用 Prompt To Image File 保存对应的描述文件,完美解决训练数据准备的问题。
6.2 复古游戏风格图片制作
使用 Game Boy Camera 节点可以快速制作复古游戏风格的头像、场景图等,非常适合像素游戏开发或怀旧主题设计。
6.3 批量文本处理工作流
Text File Reader 读取模板文件,Pre Post Text 添加个性化内容,LLM Prompt To Text File 保存结果,形成完整的文本批处理流程。
6.4 参数测试和实验
使用 Nested Loop Counter 可以系统地测试不同参数组合,比如测试不同的采样器、步数、CFG值等,找到最佳设置。
这个插件包虽然节点不多,但每个都很实用,特别适合需要批量处理、文本管理、复古效果制作的用户。配合 ComfyUI 的其他节点,可以构建出非常强大的自动化工作流。