NO8D-Image Title
Label batches without an image editor
- images
- title_bar_color
- text_color
- image
Making a comparison grid is only half the battle - the grid is useless unless you can tell which cell was which seed, which LoRA, which prompt. NO8D-Image Title is the labeling half: it stamps a title onto each image in a batch, so a 12-cell grid becomes a readable report instead of a guessing game. You get independent titles per image (one per line), full control over placement and styling, and an output that stays exactly the size you asked for.
The nice part is the batch behavior. titles is multiline and one title per line maps to one image in the batch - line 1 lands on image 1, line 2 on image 2, and a blank line skips rendering a title entirely. That makes it trivial to caption a run: "seed-42" on one line, "seed-77" on the next, and the pairing holds.
What you set
titles- one title per line, one per image. Blank lines = no title on that image.title_position- where the title goes: outside top or bottom (adds a bar beyond the image edges, growing the output height), inside top or bottom (overlays the image edges, output size unchanged), or middle (centered overlay, also size-preserving).title_bar_color,title_bar_opacity(0–100%),title_bar_height(0–100%, relative to source image height) - the bar's look. The opacity and height-as-percentage pair is what makes the bar look deliberate rather than slapped on.font_size,text_padding,text_color,text_align(left/center/right) - the text's look and placement within the bar.output_size- resize by the longest edge before rendering: original, 1K, 2K, or 4K. Aspect ratio is preserved; this is how you keep batches consistent when your sources come in mixed resolutions.
Output is image - the titled batch, one image per input.
How it works
It's a PIL-composition node: resize if you asked for it, create a bar sized from the height percentage, composite text onto it at the requested alignment, and stack the bar and image in the chosen position. The middle and inside positions overlay rather than extend, so you can title an image without changing its footprint - important when downstream expects a specific resolution.
Where it fits
Straight after a grid node or a batch save. Grid the batch, title it, save it - that's the entire reporting pipeline, and it produces the kind of file you can post to show a parameter comparison without typing explanations. It also pairs with NO8D save for dataset work where the filename alone doesn't capture which run an image belongs to.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/no8d/ComfyUI-NO8D-controls.git
python -m pip install -r requirements.txt
ComfyUI Manager → "NO8D-controls". No models. The recurring gotchas: title count must line up with image count or blank lines will handle the overflow; and if you need a specific output resolution, set output_size before compositing, because outside-position bars grow the final height by design. One more - like NO8D-Image Grid and NO8D-Prompt Merge, this node uses the newer backend node API, so a stale ComfyUI won't register it. Update, then restart.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| titles | STRING | image-01 | — |
| title_bar_color | COLOR | #2563EB | — |
| title_bar_opacity | INT | 600–100 | — |
| title_position | COMBO | 图内底部 | 5 options: 图外顶部, 图内顶部, 中部, 图内底部, 图外底部 |
| title_bar_height | INT | 101–100 | — |
| font_size | INT | 361–512 | — |
| text_padding | INT | 40–1024 | — |
| text_color | COLOR | #FFFFFF | — |
| text_align | COMBO | 居中 | 3 options: 居左, 居中, 居右 |
| output_size | COMBO | 原始尺寸 | 4 options: 原始尺寸, 1K, 2K, 4K |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |