Color Gel Batch (N)
Turn up to ten images into one batch, so one save node writes them all
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- images
This is the node that makes batch saving work. Color Gel Batch (N) takes up to ten separate images and stacks them into a single IMAGE batch, so one Color Gel Save downstream writes all of them with identical settings instead of you dragging out ten save nodes and praying you set them the same. It's the "combine" step in the pack's own example workflow: load two images → tint each with Color Gel (select) → merge here → one save → one preview.
You hit the same workflow pattern all over ComfyUI: tint or finish several frames, then want them exported the same way. The trick this pack uses is that its Save node detects a batch and writes one file per frame automatically - base_20260827_120000_0001.ext, _0002, and so on. Batch (N) is what feeds that. Without it you'd be saving each image by hand.
How it works
Each input (image_1 through image_10) expects a single image - a batch of frames is not what it wants. It stacks the connected inputs along a new batch axis to get a B x H x W x C tensor. Before stacking it does a few sanity passes:
- Same height/width required across all inputs, or it errors.
- Channels are auto-matched. RGB and RGBA can mix; if any input has alpha, the RGB ones get an opaque alpha channel appended so the stack is consistent.
- Dtype and device are unified to the first image, so you can't silently mix float32 CPU and float16 CUDA tensors.
- It checks for NaN/inf values and raises rather than saving garbage.
Only connected inputs are used. One image alone becomes a batch of one. Feed it two and you get a batch of two, ready for the save node's numbering.
The inputs that matter
image_1- required. Everything else (image_2…image_10) is optional and only counts if wired.- Output:
images- the stacked batch, wired to Color Gel Save'simageinput.
That's the whole interface. There are no strength knobs or modes here; it's pure plumbing. The interesting options live in the nodes around it - the tinting choices in Color Gel (select), the file-naming in Color Gel Names (N).
Installing Color Gel Pixel
Batch (N) ships in the Color Gel Pixel pack (MIT, by cadric), which also includes Color Gel (select), Color Gel Save, Color Gel Preview, Names (N), Palette, and Batch Flatten. One install gets you all of them.
cd ComfyUI/custom_nodes
git clone https://github.com/cadric/color_gel_pixel
Restart ComfyUI afterward, or use ComfyUI Manager → Install Custom Nodes → search "Color Gel Pixel." There are no model files to download and no extra pip packages - pyproject.toml declares zero dependencies, leaning on torch/NumPy/Pillow that ComfyUI already has. The pack does require ComfyUI 0.3.65+.
Common issues
- "all images must have same width/height to batch" - the one you'll actually run into. The images you're merging need matching dimensions; resize the straggler first. This is a hard requirement of batching, not a quirk of this node.
- "Input already a batch; expected single image" - you fed a batched tensor into
image_1. Each input here is one image; if you already have a batch, that's what Color Gel Batch Flatten is for. - "Input image contains NaN/inf values" - something upstream broke. It refuses to batch garbage, which is friendlier than silently corrupting a save.
One honest caveat: this pack is small and new - it doesn't have the community footprint of the big node suites, and there isn't much discussion of it out there. What you get instead is a tight, deterministic set of nodes that does one color-gel workflow well. For merging your tinted frames into a single export pass, Batch (N) is the right tool.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image_1 | IMAGE | First image (RGB/RGBA). | |
| image_2opt | IMAGE | Optional image 2 (RGB/RGBA). | |
| image_3opt | IMAGE | Optional image 3 (RGB/RGBA). | |
| image_4opt | IMAGE | Optional image 4 (RGB/RGBA). | |
| image_5opt | IMAGE | Optional image 5 (RGB/RGBA). | |
| image_6opt | IMAGE | Optional image 6 (RGB/RGBA). | |
| image_7opt | IMAGE | Optional image 7 (RGB/RGBA). | |
| image_8opt | IMAGE | Optional image 8 (RGB/RGBA). | |
| image_9opt | IMAGE | Optional image 9 (RGB/RGBA). | |
| image_10opt | IMAGE | Optional image 10 (RGB/RGBA). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |