Nodes Browser
ComfyDeploy: How ComfyUI-QHNodes works in ComfyUI?
What is ComfyUI-QHNodes?
A custom node collection developed for ComfyUI, offering preset dimensions for Latent, loading LoRA from folders, and integrating multiple commonly used custom nodes.
How to install it in ComfyDeploy?
Head over to the machine page
- Click on the "Create a new machine" button
- Select the
Edit
build steps - Add a new step -> Custom Node
- Search for
ComfyUI-QHNodes
and select it - Close the build step dialig and then click on the "Save" button to rebuild the machine
ComfyUI-QHNodes
为 ComfyUI 开发的自定义节点集合,提供预设尺寸预设Latent、从文件夹加载LoRA,以及集成了多个常用的自定义节点。
所有节点均为日常所用,偏定制化,如有需要,可参考
包含节点
主仓库节点
- 预设尺寸 (Preset Size Latent): 提供常用的图像尺寸预设
- 文件夹加载LoRA (Load LoRA from Folder): 批量加载指定文件夹中的 LoRA 模型
- 采样器设置 (Sampler Settings): 提供采样器和调度器设置的配置节点
- JSON解包 (JsonUnpack): 解析JSON字符串并提取指定的键值,支持最多5个键的提取
- Gemini图像分析 (Gemini): 使用Google Gemini模型进行图像分析和描述
- 文件夹图片统计 (Image Count From Folder): 统计指定文件夹中的图片数量
- 文件夹加载图片 (Load Image From Folder): 从指定文件夹中批量加载图片,支持设置起始索引和加载数量
- 文件保存 (File Save): 将文本内容保存到指定文件夹,支持多种文件格式
- 动态表达式 (Dynamic Expression): 执行动态Python表达式,支持最多5个参数
集成的子模块
以下是集成的常用节点,如果不需要所有节点,可单独下载:
-
- 字符串相关的自定义节点,提高在处理字符串时的效率和灵活性
- 支持字符串列表、翻译、CSV导入导出等功能
- 提供多种字符串选择方式:按序号选择、顺序循环、随机选择
-
- 用于图像压缩的ComfyUI自定义节点,支持JPEG、WEBP、PNG压缩格式和参数调整
-
- 提供ComfyUI网页截图、相机水印、自由模板转图片功能节点
-
- ComfyUI的模型下载节点,支持civitai和huggingface下的模型下载
安装方法
场景一:安装所有节点(推荐)
如果你想使用所有功能,可以一次性安装所有节点:
cd ComfyUI/custom_nodes/
git clone --recursive https://github.com/liuqianhonga/ComfyUI-QHNodes.git
场景二:仅安装主仓库节点
如果你只想使用预设尺寸和文件夹加载LoRA功能:
cd ComfyUI/custom_nodes/
git clone https://github.com/liuqianhonga/ComfyUI-QHNodes.git
子模块管理(可选)
- 添加子模块:如果之前只安装了主仓库,现在想添加子模块
cd ComfyUI/custom_nodes/ComfyUI-QHNodes
git submodule init
git submodule update
- 更新子模块:如果想更新子模块到最新版本
cd ComfyUI/custom_nodes/ComfyUI-QHNodes
git submodule update --remote
所有依赖会在 ComfyUI 启动时自动检查和安装。
更新说明
更新主仓库
cd ComfyUI/custom_nodes/ComfyUI-QHNodes
git pull
更新所有子模块
cd ComfyUI/custom_nodes/ComfyUI-QHNodes
git submodule update --remote
节点说明
🐟预设尺寸 (Preset Size Latent)
预设尺寸节点,支持以下预设:
竖版尺寸预设
-
竖版通用 (1024×1536)
- 标准的 2:3 竖版比例
- 适合壁纸和电子书封面
-
竖版高清 (1280×1536)
- 5:6 竖版比例
- 适合社交平台/AI作画
-
竖版长图 (1024×2048)
- 1:2 竖版比例
- 适合全身像/海报/建筑
-
竖版超清 (1536×2048)
- 适合精细插画/商业海报
-
竖版超长 (1080×2520)
- 9:21 竖版比例
- 适合长图文/漫画
横版尺寸预设
-
横版通用 (1536×1024)
- 3:2 横版比例
- 适合风景/场景
-
横版宽屏 (1920×1080)
- 16:9 横版比例
- 适合桌面壁纸
-
横版超宽 (2560×1080)
- 21:9 横版比例
- 适合全景图
手机尺寸预设
-
手机人像 16:9 (1080×1920)
- 适合人像/全身照
- 标准的手机全屏比例
-
手机人像 4:3 (1440×1920)
- 适合证件照/半身像
- 更宽的画面比例
-
手机场景 3:2 (1280×1920)
- 适合风景和建筑
- 宽屏构图
-
手机通用 (1024×1024)
- 适合头像和产品图
- 方形构图
-
手机高清 (1920×1920)
- 适合精致产品和艺术作品
- 高分辨率方形
-
手机壁纸 Mobile Wallpaper (1280×2048)
- 适合手机壁纸和移动设备内容
- 5:8 比例,垂直长图
视频尺寸预设
-
4K (3840×2160)
- 超高清视频标准
- 适合专业视频制作
-
2K (2048×1152)
- 高清视频标准
- 适合一般视频制作
-
1080p (1920×1080)
- 全高清视频标准
- 最常用的视频尺寸
-
电影 (2048×870)
- 2.35:1 电影比例
- 适合电影级内容
相片尺寸预设
-
4×6英寸 (1200×1800)
- 适合冲印照片
- 标准相片尺寸
-
5×7英寸 (1500×2100)
- 适合相框装饰
- 较大相片尺寸
社交媒体预设
-
抖音/快手 (1080×1920)
- 适合短视频封面
- 标准竖屏比例
-
朋友圈 (1080×1920)
- 适合生活分享
- 移动端优化
-
小红书 (1080×1350)
- 适合美食/穿搭
- 4:5 优化比例
-
微博 (1200×900)
- 适合图文/新闻
- 横版展示
-
B站封面 (1146×717)
- 适合视频封面
- 平台优化尺寸
国际社交平台预设
-
Instagram Story (1080×1920)
- 适合故事/Vlog
- Instagram 标准尺寸
-
TikTok Video (1080×1920)
- 适合短视频/舞蹈
- TikTok 优化尺寸
-
Facebook Post (1200×630)
- 适合社交分享
- Facebook 推荐尺寸
-
Twitter Post (1200×675)
- 适合资讯/新闻
- Twitter 优化尺寸
-
Youtube Cover (2560×1440)
- 适合视频封面
- Youtube 标准尺寸
自定义预设
你可以通过编辑以下文件来添加自己的预设尺寸:
nodes/preset_sizes.json
: 社交媒体预设nodes/camera_sizes.json
: 相机预设
格式如下:
{
"预设名称 (宽×高)": [宽度, 高度]
}
🐟Load LoRA (Folder)
从指定文件夹加载 LoRA 模型。支持以下功能:
- 基础模型:接收基础模型(MODEL)作为输入
- 所有的 LoRA 都将基于此模型进行加载
- 节点会自动克隆基础模型,不会修改原始模型
- 文件夹路径:支持多个文件夹路径,使用英文逗号分隔
- 示例:
myLoras, character/style1
- 相对路径基于 ComfyUI 的
models/loras
目录 - 如果路径不存在会在控制台输出提示信息
- 示例:
- 模型强度:调整 LoRA 对模型的影响程度
- 范围:-100.0 到 100.0
- 默认值:1.0
- 负值会产生相反的效果
- 合并加载:控制多个 LoRA 的加载方式
- 开启:将所有符合条件的 LoRA 合并加载到同一个模型中
- 关闭(默认):为每个 LoRA 创建单独的模型副本
- 实时预览:执行后会显示找到的 LoRA 文件列表,方便确认是否正确加载
使用示例
-
分别加载多个 LoRA(默认模式):
model: 基础模型 lora_folders: portraits, anime/style strength_model: 0.8 merge_loras: False (默认)
输出:多个模型,每个模型包含一个 LoRA
-
合并加载多个 LoRA:
model: 基础模型 lora_folders: myLoras strength_model: 1.0 merge_loras: True
输出:一个包含所有 LoRA 的模型
注意事项
- 文件夹路径使用正斜杠
/
分隔 - 目前仅支持 .safetensors 格式的 LoRA 文件
- 如果找不到任何符合条件的文件,节点会显示"No LoRA files found"
- 合并加载多个 LoRA 时,加载顺序与文件夹中的顺序一致
- 每个 LoRA 都会创建模型的副本,请注意内存使用
🐟采样器设置 (Sampler Settings)
采样器和调度器配置节点。支持以下功能:
- 采样器设置:支持所有 ComfyUI 内置采样器
- 调度器设置:支持所有 ComfyUI 内置调度器
- 采样步数:可配置范围 1-100,默认 30 步
- 降噪强度:可配置范围 0.0-1.0,默认 1.0
输出参数类型为 ANY,方便与其他节点对接。
🐟JSON解包 (JsonUnpack)
解析JSON字符串并提取指定的键值,支持最多5个键的提取。
- JSON字符串:接收JSON字符串作为输入
- 支持标准JSON格式
- 可以从文本文件或其他节点输出中获取
- 键值提取:支持最多5个键的提取
- 使用英文逗号分隔多个键
- 键名不区分大小写
- 如果键不存在会输出空值
- 输出类型:输出类型为 ANY,方便与其他节点对接
使用示例
-
提取单个键值:
json_string: {"name": "John", "age": 30} keys: name
输出:John
-
提取多个键值:
json_string: {"name": "John", "age": 30, "city": "New York"} keys: name, age, city
输出:John, 30, New York
注意事项
- JSON字符串必须是标准格式
- 键值提取不支持嵌套JSON对象
- 如果键不存在会输出空值
- 输出类型为 ANY,方便与其他节点对接
🐟Gemini图像分析 (Gemini)
使用Google的Gemini模型对图像进行分析和描述,支持多种模型选择和参数调整。
输入参数
-
图像 (image):需要分析的图像
- 支持ComfyUI标准图像格式
- 会自动转换为Gemini支持的格式
-
API密钥 (api_key):Google API密钥
- 需要有效的Google API密钥
- 可以从Google AI Studio获取
-
模型 (model):Gemini模型选择
- gemini-2.0-flash-exp
- gemini-1.5-flash
- gemini-1.5-flash-8b
- gemini-1.5-pro
-
prompt:引导模型分析的提示文本
- 默认值:"Describe this image"
- 可以使用自定义提示词引导分析方向
-
temperature:生成文本的随机性
- 范围:0.0-2.0
- 默认值:0.8
- 较低的值生成更确定的结果
- 较高的值生成更多样化的结果
-
max_output_tokens:生成文本的最大长度
- 范围:1-8192
- 默认值:2048
输出
- 文本描述:模型对图像的分析结果
- 输出类型:STRING
- 可以与其他文本处理节点配合使用
使用示例
-
基础图像描述:
prompt: "Describe this image in detail" temperature: 0.8 max_output_tokens: 2048
-
特定分析任务:
prompt: "List all the objects in this image" temperature: 0.3 max_output_tokens: 1024
注意事项
- 需要有效的Google API密钥
- API调用可能产生费用,请参考Google的定价政策
- 较大的图像可能需要更长的处理时间
- 建议根据具体需求调整temperature和max_output_tokens参数
🐟文件夹图片统计 (Image Count From Folder)
统计指定文件夹中的图片数量。
- 文件夹路径:需要统计的文件夹路径
- 支持绝对路径和相对路径
- 相对路径基于 ComfyUI 的根目录
输出
- 图片数量:文件夹中的图片数量
- 输出类型:INT
- 可以与其他节点对接
使用示例
- 统计指定文件夹中的所有图片:
输出:文件夹中的图片数量folder_path: /path/to/folder
注意事项
- 文件夹路径必须正确
- 如果文件夹不存在会返回0
- 支持的图片格式包括常见图片格式(jpg、png、jpeg等)
🐟文件夹加载图片 (Load Image From Folder)
从指定文件夹中批量加载图片,支持设置起始索引和加载数量。
- 文件夹路径:需要加载的文件夹路径
- 支持绝对路径和相对路径
- 相对路径基于 ComfyUI 的根目录
- 起始索引:加载图片的起始索引
- 范围:0-10000
- 默认值:0
- 加载数量:加载图片的数量
- 范围:1-100
- 默认值:1
输出
- 图片列表:加载的图片列表
- 输出类型:LIST[IMAGE]
- 可以与其他图像处理节点对接
- 图片名称:加载的图片文件名列表
- 输出类型:LIST[STRING]
- 不包含路径,仅文件名
- 图片路径:加载的图片完整路径列表
- 输出类型:LIST[STRING]
- 包含完整的文件路径
使用示例
-
加载指定文件夹中的所有图片:
folder_path: /path/to/folder start_index: 0 load_cap: 10
输出:
- images: 前10张图片的图像数据
- image_names: 前10张图片的文件名
- image_paths: 前10张图片的完整路径
-
从中间开始加载图片:
folder_path: /path/to/folder start_index: 5 load_cap: 5
输出:
- images: 第5-9张图片的图像数据
- image_names: 第5-9张图片的文件名
- image_paths: 第5-9张图片的完整路径
注意事项
- 文件夹路径必须正确
- 如果文件夹不存在会返回空列表
- 加载数量不能超过文件夹中的图片数量
- 图片按文件名排序
- 支持常见图片格式(jpg、png、jpeg等)
🐟文件保存 (File Save)
将文本内容保存到指定文件夹,支持多种文件格式。
- 文件夹路径:需要保存的文件夹路径
- 支持绝对路径和相对路径
- 相对路径基于 ComfyUI 的根目录
- 文件名:保存的文件名
- 支持多种文件格式,例如txt、csv、json等
- 文本内容:需要保存的文本内容
- 支持标准文本格式
- 可以从文本文件或其他节点输出中获取
输出
- 文件路径:保存的文件路径
- 输出类型:STRING
- 可以与其他节点对接
使用示例
- 保存文本内容到指定文件夹:
输出:保存的文件路径folder_path: /path/to/folder file_name: example.txt text_content: Hello World!
注意事项
- 文件夹路径必须正确
- 文件名必须正确
- 文本内容必须是标准格式
- 如果文件夹不存在会输出错误信息
🐟动态表达式 (Dynamic Expression)
执行动态Python表达式,支持最多5个参数。
- 表达式:需要执行的Python表达式
- 支持标准Python表达式
- 可以从文本文件或其他节点输出中获取
- 参数:表达式需要的参数
- 支持任意类型
- 支持最多5个参数
输出
- 结果:表达式执行结果
- 输出类型:ANY
- 可以与其他节点对接
使用示例
-
执行简单的加法表达式:
expression: "return arg1 + arg2" arg1: 1 arg2: 2
输出:3
-
执行复杂的字符串拼接表达式:
expression: "return f'Hello, {arg1} {arg2}!' arg1: "John" arg2: "Doe"
输出:"Hello, John Doe!"
-
执行复杂的列表操作表达式:
expression: "return [arg1, arg2, arg3]" arg1: 1 arg2: 2 arg3: 3
输出:[1, 2, 3]
-
执行复杂的字典操作表达式:
expression: "return {'a': arg1, 'b': arg2, 'c': arg3}" arg1: 1 arg2: 2 arg3: 3
输出:{'a': 1, 'b': 2, 'c': 3}
-
if-else表达式:
expression: "return 'Even' if arg1 % 2 == 0 else 'Odd'" arg1: 4
输出:"Even"
注意事项
- 表达式必须是有效的Python代码
- 参数必须与表达式中的变量名匹配
- 表达式执行结果会作为输出返回