ComfyUI Tooling Nodes 插件完全教程 - 外部工具连接神器
1. 插件简介
插件地址: https://github.com/Acly/comfyui-tooling-nodes
ComfyUI Tooling Nodes 是一个专门为外部工具设计的插件包,就像一个万能的"接口转换器"!它让ComfyUI能够更好地与其他软件(比如Krita绘画软件)配合工作,提供了图片传输、区域控制、分块处理等强大功能。
这个插件能给我们带来什么效果?
- 无文件传输:直接在内存中传递图片,不需要保存到硬盘
- 区域控制:可以对图片的不同区域应用不同的提示词
- 分块处理:把大图片分成小块处理,节省显存
- 外部工具集成:与Krita等绘画软件无缝连接
- 内容过滤:自动检测和模糊不当内容
- 文本翻译:支持多语言翻译功能
想象一下,你在Krita里画画,想要AI帮你优化某个区域,用这个插件就能直接把图片传给ComfyUI处理,然后立刻看到结果,整个过程就像在同一个软件里操作一样流畅!
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "comfyui-tooling-nodes" 或 "External Tooling"
- 点击安装
- 重启 ComfyUI
方法二:手动安装
- 打开终端/命令提示符
- 进入 ComfyUI 的 custom_nodes 文件夹
- 运行以下命令:
git clone https://github.com/Acly/comfyui-tooling-nodes.git
- 重启 ComfyUI
可选依赖安装:
- 翻译功能:
pip install argostranslate - 内容过滤功能会自动下载所需模型
3. 节点详细解析
3.1 ETN_LoadImageBase64 节点(Base64图片加载器)
这个节点就像一个"图片解码器",它能把编码成文字的图片数据重新变回图片。就像把压缩包解压一样。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 文本输入 | 无 | 输入编码后的图片数据,就像输入密码 | Base64编码的PNG图像数据 | 粘贴从外部工具传来的图片编码字符串 |
3.2 ETN_LoadMaskBase64 节点(Base64遮罩加载器)
这个节点专门用来加载遮罩图片,就像一个"模板切割器",告诉AI哪些地方需要处理。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| mask | mask | 文本输入 | 无 | 输入编码后的遮罩数据,就像输入剪纸模板 | Base64编码的遮罩图像数据 | 粘贴从外部工具传来的遮罩编码字符串 |
3.3 ETN_SendImageWebSocket 节点(WebSocket图片发送器)
这个节点就像一个"快递员",能把处理好的图片立刻发送给外部软件,不需要保存文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | 图片输入 | 无 | 要发送的图片,就像要寄出的包裹 | 输入图像数据 | 连接生成图片的节点输出 |
| format | format | 下拉选择 | "PNG" | 图片格式,就像选择包装方式 | 输出图像的文件格式 | PNG质量好,JPEG文件小 |
3.4 ETN_CropImage 节点(图片裁剪器)
这个节点就像一把"智能剪刀",能精确地裁剪出图片的某个部分。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要裁剪的原图,就像要剪的纸 | 输入图像数据 | 连接需要裁剪的图片 |
| x | x | 整数输入 | 0 | 裁剪起始的横坐标,就像标尺上的刻度 | 裁剪区域左上角X坐标 | 从左边第100个像素开始裁剪就填100 |
| y | y | 整数输入 | 0 | 裁剪起始的纵坐标,就像标尺上的刻度 | 裁剪区域左上角Y坐标 | 从上边第50个像素开始裁剪就填50 |
| width | width | 整数输入 | 512 | 裁剪的宽度,就像剪出来的纸有多宽 | 裁剪区域的宽度像素 | 想要512像素宽的图片就填512 |
| height | height | 整数输入 | 512 | 裁剪的高度,就像剪出来的纸有多高 | 裁剪区域的高度像素 | 想要512像素高的图片就填512 |
3.5 ETN_ApplyMaskToImage 节点(遮罩应用器)
这个节点就像一个"透明度调节器",能把遮罩变成图片的透明通道。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要添加透明效果的图片 | 输入图像数据 | 连接需要添加透明效果的图片 |
| mask | mask | 遮罩输入 | 无 | 控制透明度的遮罩,就像模板 | 输入遮罩数据 | 连接控制透明度的遮罩 |
3.6 ETN_ReferenceImage 节点(参考图片设置器)
这个节点就像一个"样本收集器",能收集参考图片并设置它们的影响力。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 参考图片,就像给AI看的样本 | 参考图像数据 | 连接想要作为参考的图片 |
| weight | weight | 小数输入 | 1.0 | 参考图片的影响力,就像调节音量 | 参考图像的权重强度 | 1.0是标准影响力,2.0是双倍影响 |
| range_start | range_start | 小数输入 | 0.0 | 影响开始的时间点,就像定时器开始 | 影响范围的起始百分比 | 0.0表示从一开始就有影响 |
| range_end | range_end | 小数输入 | 1.0 | 影响结束的时间点,就像定时器结束 | 影响范围的结束百分比 | 1.0表示影响到最后 |
| reference_images | reference_images | 连接输入 | 无 | 之前的参考图片列表,用来串联多个参考 | 已有的参考图像列表 | 连接其他参考图片节点的输出 |
3.7 ETN_ApplyReferenceImages 节点(参考图片应用器)
这个节点就像一个"风格混合器",把参考图片的风格应用到生成过程中。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | 连接输入 | 无 | 原始的提示词信息,就像基础配方 | 输入的条件信息 | 连接文本编码器的输出 |
| clip_vision | clip_vision | 连接输入 | 无 | 图片理解模型,就像AI的眼睛 | CLIP视觉模型 | 连接CLIP视觉模型加载器 |
| style_model | style_model | 连接输入 | 无 | 风格模型,就像风格转换器 | 风格转换模型 | 连接风格模型加载器 |
| references | references | 连接输入 | 无 | 参考图片列表,就像样本册 | 参考图像数据列表 | 连接参考图片节点的输出 |
3.8 ETN_TileLayout 节点(分块布局创建器)
这个节点就像一个"拼图规划师",决定如何把大图片分成小块来处理。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要分块的原图,就像要切的蛋糕 | 输入图像数据 | 连接需要分块处理的大图 |
| min_tile_size | min_tile_size | 整数输入 | 512 | 每块的最小尺寸,就像蛋糕块的最小大小 | 每个分块的最小像素尺寸 | 512适合大多数情况,显存小可以用256 |
| padding | padding | 整数输入 | 32 | 块之间的重叠区域,就像拼图的咬合部分 | 分块间的重叠像素数 | 32能很好地避免接缝,可以调整到64 |
| blending | blending | 整数输入 | 8 | 融合区域大小,就像渐变过渡的宽度 | 用于平滑过渡的像素数 | 8提供平滑过渡,不能超过padding值 |
3.9 ETN_ExtractImageTile 节点(图片分块提取器)
这个节点就像一个"拼图块取出器",能从大图中取出指定的小块。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要提取块的原图 | 输入图像数据 | 连接需要提取分块的图片 |
| layout | layout | 连接输入 | 无 | 分块布局信息,就像拼图的说明书 | 分块布局配置 | 连接分块布局创建器的输出 |
| index | index | 整数输入 | 0 | 要提取的块编号,就像拼图块的序号 | 分块的索引编号 | 0是第一块,1是第二块,依此类推 |
3.10 ETN_ExtractMaskTile 节点(遮罩分块提取器)
这个节点专门用来提取遮罩的分块,就像"模板切割器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| mask | mask | 遮罩输入 | 无 | 要提取块的遮罩 | 输入遮罩数据 | 连接需要提取分块的遮罩 |
| layout | layout | 连接输入 | 无 | 分块布局信息 | 分块布局配置 | 连接分块布局创建器的输出 |
| index | index | 整数输入 | 0 | 要提取的遮罩块编号 | 遮罩分块的索引编号 | 0是第一块,1是第二块,依此类推 |
3.11 ETN_GenerateTileMask 节点(分块遮罩生成器)
这个节点就像一个"模板制作器",为每个分块生成对应的遮罩。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| layout | layout | 连接输入 | 无 | 分块布局信息 | 分块布局配置 | 连接分块布局创建器的输出 |
| index | index | 整数输入 | 0 | 要生成遮罩的块编号 | 分块的索引编号 | 0是第一块,1是第二块,依此类推 |
| blend | blend | 布尔选择 | False | 是否使用渐变边缘,就像羽化效果 | 是否应用边缘融合 | True产生平滑边缘,False产生硬边缘 |
3.12 ETN_MergeImageTile 节点(图片分块合并器)
这个节点就像一个"拼图组装器",把处理好的小块重新拼成大图。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要合并到的目标图片,就像拼图底板 | 目标图像数据 | 连接作为底板的原图 |
| layout | layout | 连接输入 | 无 | 分块布局信息 | 分块布局配置 | 连接分块布局创建器的输出 |
| index | index | 整数输入 | 0 | 要合并的块编号 | 分块的索引编号 | 0是第一块,1是第二块,依此类推 |
| tile | tile | 图片输入 | 无 | 处理好的分块图片,就像拼图块 | 处理后的分块图像 | 连接处理好的分块图片 |
3.13 ETN_BackgroundRegion 节点(背景区域定义器)
这个节点就像一个"背景画师",为图片的背景区域设置专门的提示词。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | 连接输入 | 无 | 背景区域的提示词,就像背景的描述 | 背景区域的条件信息 | 连接描述背景的文本编码器 |
3.14 ETN_DefineRegion 节点(区域定义器)
这个节点就像一个"区域标记器",为图片的特定区域设置专门的提示词。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| mask | mask | 遮罩输入 | 无 | 区域的遮罩,就像涂色区域的边界 | 定义区域范围的遮罩 | 连接标记特定区域的遮罩 |
| conditioning | conditioning | 连接输入 | 无 | 该区域的提示词,就像该区域的描述 | 该区域的条件信息 | 连接描述该区域的文本编码器 |
| regions | regions | 连接输入 | 无 | 之前定义的区域列表,用来串联多个区域 | 已有的区域列表 | 连接其他区域节点的输出 |
3.15 ETN_ListRegionMasks 节点(区域遮罩列表器)
这个节点就像一个"遮罩展示器",能显示所有区域的遮罩。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| regions | regions | 连接输入 | 无 | 区域列表,就像所有涂色区域的集合 | 区域数据列表 | 连接区域定义器的输出 |
3.16 ETN_AttentionMask 节点(注意力遮罩应用器)
这个节点就像一个"注意力导演",让AI对不同区域使用不同的提示词。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | 连接输入 | 无 | AI模型,就像要指导的画家 | 输入的模型数据 | 连接模型加载器的输出 |
| regions | regions | 连接输入 | 无 | 区域列表,就像指导说明书 | 区域数据列表 | 连接区域定义器的输出 |
3.17 ETN_NSFWFilter 节点(内容过滤器)
这个节点就像一个"内容审查员",能自动检测和模糊不当内容。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片输入 | 无 | 要检查的图片,就像要审查的内容 | 输入图像数据 | 连接需要检查的图片 |
| sensitivity | sensitivity | 小数输入 | 0.5 | 检测敏感度,就像审查的严格程度 | 内容检测的敏感度阈值 | 0.5检测明显内容,0.7检测更多内容 |
3.18 ETN_Translate 节点(文本翻译器)
这个节点就像一个"多语言翻译官",能把各种语言翻译成英文。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 文本输入 | 无 | 要翻译的文字,可以包含语言标记 | 输入的多语言文本 | 输入"lang:zh 美丽的花朵"会翻译成"beautiful flowers" |
3.19 ETN_KritaOutput 节点(Krita输出器)
这个节点专门用来向Krita软件发送图片,就像一个"专用快递员"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | 图片输入 | 无 | 要发送给Krita的图片 | 输出到Krita的图像数据 | 连接要发送给Krita的图片 |
3.20 ETN_KritaSendText 节点(Krita文本发送器)
这个节点能向Krita发送文本信息,就像一个"信息传递员"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| value | value | 任意输入 | 无 | 要发送的内容,可以是任何数据 | 要发送的数据值 | 连接任何想要发送的数据 |
| name | name | 文本输入 | "Output" | 显示的名称,就像标签 | 输出数据的显示名称 | 填写"生成结果"或其他描述性名称 |
| type | type | 下拉选择 | "text" | 内容类型,就像文件格式 | 文本内容的格式类型 | text是纯文本,markdown支持格式,html支持网页格式 |
3.21 ETN_KritaCanvas 节点(Krita画布获取器)
这个节点用来获取Krita的画布信息,就像一个"画布探测器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
此节点无输入参数,直接输出Krita画布的图片、宽度、高度和种子值
3.22 ETN_KritaSelection 节点(Krita选区获取器)
这个节点用来获取Krita的选区信息,就像一个"选区探测器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
此节点无输入参数,直接输出Krita选区的遮罩
3.23 ETN_KritaImageLayer 节点(Krita图层获取器)
这个节点用来获取Krita指定图层的内容,就像一个"图层提取器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 文本输入 | "Image" | 图层名称,就像图层的标签 | 要获取的图层名称 | 填写Krita中图层的实际名称 |
3.24 ETN_KritaMaskLayer 节点(Krita遮罩图层获取器)
这个节点专门获取Krita的遮罩图层,就像一个"遮罩提取器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 文本输入 | "Mask" | 遮罩图层名称,就像遮罩的标签 | 要获取的遮罩图层名称 | 填写Krita中遮罩图层的实际名称 |
3.25 ETN_Parameter 节点(参数控制器)
这个节点就像一个"万能控制器",能创建各种类型的参数供外部工具调节。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 文本输入 | "Parameter" | 参数的名称,就像控制器的标签 | 参数的显示名称 | 填写"强度"、"步数"等描述性名称 |
| type | type | 下拉选择 | "auto" | 参数类型,就像控制器的种类 | 参数的数据类型 | auto自动检测,number是数字,toggle是开关 |
| default | default | 文本输入 | "" | 默认值,就像控制器的初始位置 | 参数的默认值 | 填写合适的初始值 |
| min | min | 小数输入 | 0.0 | 最小值,就像控制器的下限 | 数字参数的最小值 | 设置合理的最小值 |
| max | max | 小数输入 | 1.0 | 最大值,就像控制器的上限 | 数字参数的最大值 | 设置合理的最大值 |
3.26 ETN_KritaStyle 节点(Krita风格获取器)
这个节点用来获取Krita的风格设置,就像一个"风格探测器"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 文本输入 | "Style" | 风格名称,就像风格的标签 | 风格配置的名称 | 填写描述性的风格名称 |
| sampler_preset | sampler_preset | 下拉选择 | "auto" | 采样器预设,就像画笔的类型 | 采样器的预设模式 | auto自动选择,regular常规模式,live实时模式 |
4. 使用技巧和建议
4.1 图片传输优化
- 使用WebSocket传输:比文件传输更快更稳定
- Base64编码:适合小图片,大图片可能会很慢
- 格式选择:PNG质量好,JPEG文件小
4.2 区域控制技巧
- 遮罩精度:遮罩越精确,区域控制效果越好
- 提示词匹配:不同区域使用相关性强的提示词
- 背景处理:记得设置背景区域的提示词
4.3 分块处理策略
- 显存优化:显存不足时使用更小的分块
- 重叠设置:适当的重叠能避免接缝
- 融合参数:合理的融合参数让拼接更自然
4.4 外部工具集成
- Krita配合:需要安装对应的Krita插件
- 参数暴露:使用Parameter节点暴露重要参数
- 实时预览:利用WebSocket实现实时预览
5. 常见问题解答
Q1:Base64图片加载失败怎么办?
A:
- 检查Base64字符串是否完整
- 确认图片格式是PNG
- 检查是否包含正确的前缀
Q2:区域控制效果不明显?
A:
- 检查遮罩是否正确对应区域
- 确认提示词是否足够具体
- 尝试调整不同区域的提示词对比度
Q3:分块处理出现接缝?
A:
- 增加padding值
- 调整blending参数
- 确保分块顺序正确
Q4:与Krita连接失败?
A:
- 确认安装了对应的Krita插件
- 检查WebSocket连接是否正常
- 重启ComfyUI和Krita
Q5:翻译功能不工作?
A:
- 安装argostranslate:
pip install argostranslate - 首次使用会自动下载语言包
- 检查语言代码是否正确
6. 高级应用场景
6.1 专业绘画工作流
- Krita集成:在Krita中直接调用ComfyUI功能
- 实时预览:边画边看AI处理效果
- 图层处理:对不同图层应用不同处理
6.2 大图处理优化
- 分块策略:将大图分块处理节省显存
- 并行处理:多个分块可以并行处理
- 无缝拼接:智能融合避免接缝
6.3 多语言内容创作
- 自动翻译:支持多种语言的提示词
- 语言混合:在同一提示词中混合多种语言
- 本地化处理:为不同地区定制内容
7. 性能优化建议
7.1 内存管理
- 及时释放:处理完成后及时释放内存
- 分批处理:大量图片分批处理
- 缓存控制:合理控制缓存大小
7.2 网络优化
- WebSocket连接:保持稳定的WebSocket连接
- 数据压缩:适当压缩传输数据
- 错误重试:网络错误时自动重试
8. 工作流程示例
8.1 基础图片处理流程
- 加载图片:使用LoadImageBase64加载
- 处理图片:应用各种处理节点
- 发送结果:使用SendImageWebSocket发送
8.2 区域控制流程
- 定义背景:使用BackgroundRegion
- 定义区域:使用DefineRegion添加特定区域
- 应用控制:使用AttentionMask应用区域控制
8.3 分块处理流程
- 创建布局:使用TileLayout规划分块
- 提取分块:使用ExtractImageTile提取
- 处理分块:对每个分块进行处理
- 合并结果:使用MergeImageTile合并
9. 总结
ComfyUI Tooling Nodes 是一个功能强大的外部工具集成插件,它为ComfyUI提供了与其他软件协作的能力。通过合理使用这些节点,可以大大提升工作效率和创作体验。
记住这几个要点:
- 选择合适的传输方式(WebSocket vs Base64)
- 合理设置区域控制参数
- 优化分块处理策略
- 善用外部工具集成功能
- 注意性能优化和错误处理
现在就开始探索这个强大的工具集,让你的ComfyUI工作流程更加高效和专业!