ComfyUI-TextOnSegs 插件保姆级教程
1. 插件简介
ComfyUI-TextOnSegs 是一个专门为 ComfyUI 设计的自定义节点插件,GitHub原地址:https://github.com/nkchocoai/ComfyUI-TextOnSegs
这个插件就像是一个"智能文字贴纸机",它能够: - 自动识别图片中的特定区域(比如人脸、物体等) - 在这些区域上精确地添加文字 - 让文字大小自动适应区域大小 - 支持多种字体和样式设置
想象一下,你有一张照片,想在每个人脸上都贴上姓名标签,或者在检测到的物体上加上说明文字,这个插件就能帮你自动完成这些工作,就像有个聪明的助手帮你一个个贴标签一样。
2. 如何安装
方法一:使用命令行安装(推荐)
- 打开命令提示符(Windows)或终端(Mac/Linux)
- 切换到你的 ComfyUI 安装目录,比如:
cd C:\ComfyUI_windows_portable\ComfyUI\custom_nodes - 运行安装命令:
git clone https://github.com/nkchocoai/ComfyUI-TextOnSegs.git
方法二:手动下载安装
- 访问 https://github.com/nkchocoai/ComfyUI-TextOnSegs
- 点击绿色的 "Code" 按钮
- 选择 "Download ZIP"
- 解压到 ComfyUI 的 custom_nodes 文件夹中
额外设置(重要)
为了让中文和其他特殊字符正常显示,你需要:
1. 下载字体文件(.ttf 格式)
2. 放到这个路径:ComfyUI_windows_portable/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes/fonts
3. 没有这个文件夹的话就创建一个
3. 节点详细解析
3.1 TextOnSegs 节点 - 在分割区域上绘制文字
这个节点就像是一个"智能文字印章机",它会找到图片中被检测到的特定区域,然后在每个区域上盖上文字印章。
3.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图像 | image | IMAGE | - | 要处理的原图片 | 输入的图像数据 | 连接你要加文字的图片 |
| 分割数据 | segs | SEGS | - | 检测到的区域信息 | 分割检测结果数据 | 连接检测器节点的输出 |
| 文字内容 | text | 文本 | "Hello" | 要显示的文字内容 | 要绘制的文本字符串 | 输入"张三"、"苹果"等 |
| 字体文件 | font_name | 字体名称 | "arial.ttf" | 用什么字体显示 | 字体文件名称 | 选择已安装的字体 |
| 字体大小 | font_size | 数字 | 50 | 文字的大小 | 字体像素大小 | 50表示中等大小 |
| 字体颜色 | font_color | 颜色 | "white" | 文字的颜色 | 字体颜色值 | "red"、"blue"、"#FF0000" |
| 对齐方式 | align | 选择 | "center" | 文字在区域中的位置 | 文本对齐方式 | center居中,left左对齐 |
| 边框颜色 | outline_color | 颜色 | "black" | 文字边框颜色 | 文字轮廓颜色 | 让文字更清晰可见 |
| 边框厚度 | outline_thickness | 数字 | 1 | 边框线条粗细 | 轮廓线像素宽度 | 1是细边框,3是粗边框 |
| 透明度 | opacity | 数字 | 1.0 | 文字的透明程度 | 不透明度值 | 1.0完全不透明,0.5半透明 |
| 位置偏移X | offset_x | 数字 | 0 | 水平方向移动文字 | X轴偏移像素 | 正数向右,负数向左 |
| 位置偏移Y | offset_y | 数字 | 0 | 垂直方向移动文字 | Y轴偏移像素 | 正数向下,负数向上 |
3.3 CalcMaxFontSize 节点 - 自动计算最佳字体大小
这个节点就像是一个"智能尺子",它会测量检测到的区域大小,然后自动计算出最合适的字体大小,确保文字既不会太小看不清,也不会太大超出区域。
3.4 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 分割数据 | segs | SEGS | - | 检测到的区域信息 | 分割检测结果数据 | 连接检测器的输出 |
| 文字内容 | text | 文本 | "Hello" | 要显示的文字 | 用于计算的文本内容 | 输入实际要显示的文字 |
| 字体文件 | font_name | 字体名称 | "arial.ttf" | 使用的字体 | 字体文件名称 | 选择系统字体 |
| 最大字体大小 | max_font_size | 数字 | 100 | 字体大小上限 | 最大允许字体像素大小 | 100表示最大不超过100像素 |
| 最小字体大小 | min_font_size | 数字 | 10 | 字体大小下限 | 最小允许字体像素大小 | 10表示最小不小于10像素 |
| 填充比例 | fill_ratio | 数字 | 0.8 | 文字占区域的比例 | 文本相对于区域的缩放比例 | 0.8表示占80%的区域 |
| 边距 | margin | 数字 | 5 | 文字周围的空白 | 边距像素大小 | 5表示周围留5像素空白 |
3.5 TextOnSegsAdvanced 节点 - 高级文字绘制
这个节点就像是一个"专业级文字设计师",提供了更多高级功能,比如文字阴影、渐变效果、多行文字等。
3.6 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图像 | image | IMAGE | - | 要处理的原图片 | 输入的图像数据 | 连接你要加文字的图片 |
| 分割数据 | segs | SEGS | - | 检测到的区域信息 | 分割检测结果数据 | 连接检测器节点的输出 |
| 文字内容 | text | 文本 | "Hello" | 要显示的文字内容 | 要绘制的文本字符串 | 支持换行符\n |
| 字体文件 | font_name | 字体名称 | "arial.ttf" | 用什么字体显示 | 字体文件名称 | 选择已安装的字体 |
| 字体大小 | font_size | 数字 | 50 | 文字的大小 | 字体像素大小 | 50表示中等大小 |
| 字体颜色 | font_color | 颜色 | "white" | 文字的颜色 | 字体颜色值 | "red"、"blue"、"#FF0000" |
| 背景颜色 | background_color | 颜色 | "transparent" | 文字背景颜色 | 背景填充颜色 | 给文字加背景色 |
| 背景透明度 | background_opacity | 数字 | 0.5 | 背景的透明程度 | 背景不透明度 | 0.5表示半透明背景 |
| 阴影颜色 | shadow_color | 颜色 | "black" | 文字阴影颜色 | 阴影效果颜色 | 让文字有立体感 |
| 阴影偏移X | shadow_offset_x | 数字 | 2 | 阴影水平偏移 | X轴阴影偏移像素 | 2表示向右偏移2像素 |
| 阴影偏移Y | shadow_offset_y | 数字 | 2 | 阴影垂直偏移 | Y轴阴影偏移像素 | 2表示向下偏移2像素 |
| 阴影模糊 | shadow_blur | 数字 | 0 | 阴影的模糊程度 | 阴影模糊半径 | 0表示清晰,5表示模糊 |
| 行间距 | line_spacing | 数字 | 1.2 | 多行文字的间距 | 行高倍数 | 1.2表示行高是字体的1.2倍 |
| 文字方向 | text_direction | 选择 | "horizontal" | 文字排列方向 | 文本方向设置 | horizontal水平,vertical垂直 |
4. 使用技巧和建议
4.1 字体选择技巧
- 中文文字:一定要使用支持中文的字体,比如"simsun.ttc"(宋体)、"simhei.ttf"(黑体)
- 英文文字:可以使用系统默认字体,比如"arial.ttf"、"times.ttf"
- 特殊效果:想要艺术效果可以下载特殊字体,比如手写体、卡通字体
4.2 颜色搭配建议
- 深色背景:使用白色或亮色文字
- 浅色背景:使用黑色或深色文字
- 复杂背景:建议加上边框或阴影让文字更清晰
- 颜色格式:支持"red"、"blue"这样的英文名称,也支持"#FF0000"这样的十六进制颜色
4.3 大小调整技巧
- 自动调整:优先使用 CalcMaxFontSize 节点自动计算大小
- 手动调整:如果自动计算的大小不满意,可以手动设置 font_size
- 区域适配:fill_ratio 参数建议设置在 0.6-0.9 之间,留些边距更美观
4.4 位置调整建议
- 居中对齐:大多数情况下使用 "center" 效果最好
- 偏移调整:如果文字位置不理想,可以用 offset_x 和 offset_y 微调
- 多行文字:使用 \n 来换行,用 line_spacing 调整行间距
5. 常见问题解答
Q1: 为什么中文显示乱码?
A: 这是因为没有安装中文字体。解决方法: 1. 下载中文字体文件(.ttf 格式) 2. 放到 ComfyUI_Comfyroll_CustomNodes/fonts 文件夹 3. 在节点中选择对应的中文字体
Q2: 为什么有时候不显示文字?
A: 可能的原因: 1. 检测器没有检测到任何区域 2. 字体文件路径不正确 3. 字体大小设置为0或负数 4. 文字颜色与背景颜色相同
Q3: 文字太大或太小怎么办?
A: 建议使用 CalcMaxFontSize 节点: 1. 调整 max_font_size 和 min_font_size 参数 2. 修改 fill_ratio 来控制文字占区域的比例 3. 如果还是不满意,可以直接设置 font_size 参数
Q4: 如何让文字更清晰?
A: 几个方法: 1. 增加边框:设置 outline_color 和 outline_thickness 2. 添加阴影:设置 shadow_color 和偏移参数 3. 调整透明度:确保 opacity 设置为 1.0 4. 选择合适的字体颜色与背景对比
Q5: 支持哪些图片格式?
A: 支持 ComfyUI 常见的图片格式: - PNG、JPG、JPEG - 建议使用 PNG 格式,因为支持透明度
6. 工作流程建议
6.1 基础工作流程
- 加载图片 → 检测器节点 → TextOnSegs节点 → 输出
- 中间插入 CalcMaxFontSize 节点来自动计算字体大小
- 使用 Text 节点来输入要显示的文字内容
6.2 高级工作流程
- 加载图片 → 检测器节点 → TextOnSegsAdvanced节点 → 输出
- 可以添加多个 TextOnSegs 节点来显示不同的文字内容
- 使用条件节点来控制什么时候显示文字
6.3 批量处理建议
- 如果要处理多张图片,可以使用 Batch 相关节点
- 建议先在单张图片上测试效果,再批量处理
- 注意检查每张图片的检测结果,避免出错
7. 实际应用场景
7.1 人脸标注
- 在人脸检测的基础上添加人名标签
- 适用于团队照片、活动照片的标注
- 可以添加年龄、职业等信息
7.2 物体识别标注
- 在物体检测的基础上添加物品名称
- 适用于教学图片、产品介绍等
- 可以添加价格、规格等信息
7.3 创意设计
- 在特定区域添加艺术字体
- 制作表情包、海报等
- 添加水印、版权信息
7.4 数据标注
- 为机器学习数据集添加标签
- 制作训练数据的可视化
- 标注检测结果的准确性
这个插件就像是给 ComfyUI 增加了一个"智能文字助手",让你能够轻松地在图片的特定区域添加文字,无论是实用的标注还是创意的设计,都能轻松实现。记住多练习,熟能生巧!