ComfyUI Extension
ComfyUI_BatchImages
ComfyUI nodes for batch loading images from ZIP archives, filtering by index, and saving with original filenames. (Description by CC)
kegeai888/ComfyUI_BatchImages
Nodes—
On cloudLocal install
Stars0
Updated4 months ago
Readme
ComfyUI_BatchImages
ComfyUI 自定义节点,用于从 ZIP 压缩包批量加载图片、按索引筛选,并按原始文件名保存输出。
安装方式
- 将本仓库放到
ComfyUI/custom_nodes/目录下。 - 重启 ComfyUI。
- 重启后可在
BatchImages分类下找到相关节点。
节点说明
RHUploadZip_V2
用途:从 ComfyUI 的 input 目录选择一个 .zip 文件,解压其中支持的图片并输出清单。
- 输入:
image:ZIP 文件名,只显示input目录中的.zip文件。
- 前端行为:
- 节点会额外提供一个
Upload ZIP按钮。 - 点击后会打开文件选择框,并把 ZIP 上传到 ComfyUI 的
/upload/image接口。
- 节点会额外提供一个
- 输出:
images(as list):解压后成功读取的图片列表。masks(as list):与图片对应的遮罩列表。folder_path:本次批量解压的临时目录。manifest:图片清单,供后续节点继续使用。
处理规则:
- 仅识别
.png、.jpg、.jpeg、.webp。 - ZIP 内目录、隐藏文件、隐藏目录、
__MACOSX条目会跳过。 - ZIP 成员路径会做校验,不允许绝对路径或
..越界路径。 - 如果某个图片文件无法读取,会跳过该文件;如果全部都不可读,则节点报错。
- 多帧图片不支持,遇到后会跳过该文件。
RHBatchImages:
用途:按索引表达式从图片列表中筛选子集,并同步筛选对应的 manifest。
- 输入:
images:上游图片列表。image_indices:索引表达式,默认0-100。manifest:上游清单。
- 输出:
image:筛选后的图片列表。selected_manifest:筛选后的清单。
索引语法:
- 单个索引:
0 - 多个索引:
0,2,5 - 范围:
0-3 - 混合写法:
0,2-4,7
补充说明:
- 索引从
0开始。 - 超出范围的索引会被忽略。
- 重复索引只会保留一次,并按输入顺序输出。
- 如果表达式格式错误,或最终没有任何有效索引,会报错。
RHSaveImageOriginalName
用途:将图片按原始文件名保存到 ComfyUI 输出目录,并尽量保留 ZIP 内原有目录结构。
- 输入:
images:待保存图片列表。manifest:与图片对应的清单。filename_prefix:输出根目录前缀,默认ComfyUI。
- 输出:
- 作为输出节点写入文件,并在 UI 中返回保存结果。
保存规则:
- 输出根目录为 ComfyUI 的
output目录。 - 最终路径形式为:
output/<filename_prefix>/<ZIP中的相对子目录>/<原文件名>。 - 文件名来自原图文件名,扩展名沿用原始清单中的后缀。
- 若目标文件已存在,会自动追加
_1、_2等后缀避免覆盖。 filename_prefix和目录段会做安全清洗,不允许写到output目录之外。- PNG 输出会写入 prompt 与 extra_pnginfo 元数据;JPG/JPEG/WebP 不写 PNG 元数据。
典型工作流
推荐连接方式:
RHUploadZip_V2 -> RHBatchImages: -> 处理中间节点 -> RHSaveImageOriginalName
示例流程:
- 在
RHUploadZip_V2中选择或上传一个 ZIP。 - 将
images(as list)与manifest连接到RHBatchImages:。 - 在
image_indices中填写要处理的图片范围,例如0-9或0,2,4-6。 - 将筛选后的
image接到你的处理节点。 - 将处理后的图片和
selected_manifest一起传给RHSaveImageOriginalName。 - 在
filename_prefix中设置输出子目录,例如batch_run_01。
输出行为
- 保存位置在 ComfyUI 的
output目录下。 - 会保留 ZIP 中图片的相对子目录结构;目录名会经过安全清洗。
- 如果原始路径中包含不安全字符,会替换为下划线。
- 若同名文件已存在,不会覆盖,而是自动增加数字后缀。
例如 ZIP 内有:
setA/cat.pngsetA/dog.jpg
且 filename_prefix 为 batch_demo,则输出类似:
output/batch_demo/setA/cat.pngoutput/batch_demo/setA/dog.jpg
如果 cat.png 已存在,则会生成 cat_1.png。
注意事项
- 支持格式仅为
.png、.jpg、.jpeg、.webp。 - ZIP 中的隐藏文件、隐藏目录以及
__MACOSX条目会被跳过。 - 多帧图片不支持。
image_indices中越界的索引会忽略,不会单独报错。- 如果图片列表与 manifest 数量不一致,筛选或保存节点会报错。
验证方式
可按下面命令验证实现与 README 描述是否一致:
pytest tests-unit/custom_nodes/test_comfyui_batch_images.py -v
pytest tests/execution/test_batch_images_execution.py -v
建议核对以下几点:
- 节点名是否为
RHUploadZip_V2、RHBatchImages:、RHSaveImageOriginalName - 支持格式是否仅包含
.png/.jpg/.jpeg/.webp - 索引表达式是否支持
0,2-4这类写法 - 输出路径是否保留相对子目录,且重名时自动追加后缀
Repository
- GitHub: https://github.com/kegeai888/ComfyUI_BatchImages