Text_Image_Frame_Zho
Auto-number an entire animation's frames without hand-typing each one
- color
- outline_color
- image
Text_Image_Frame_Zho is the odd one out in this pack, and the one people discover when they need frame numbers. Instead of rendering one text image, it renders a whole sequence of them: start at a number, step by an increment, repeat for N frames, and get back a single batched IMAGE. If you've ever hand-labeled frames of an animation just to keep track of what you were looking at, this node exists to stop you doing that.
Same ZHO-ZHO-ZHO pack, same pure-PIL guts - no models, no API keys, nothing to download. It's really just the single-line text renderer (Text_Image_Zho's internals) called in a loop and stacked along the batch dimension. Simple, but it slots into video and animation workflows in a way the other nodes here don't.
How it works
The number field is the starting value, step is how much each frame increments, and frame is how many images to produce. Frame i renders the text str(int(number) + i * step) - so number "0", step 1, frame 12 gives you images labeled 0, 1, 2, … 11, all concatenated into one tensor. The output batch has exactly frame images, each at the width×height canvas you set.
Everything else is standard for the family: selected_font, align, wrap (0 = auto-wrap), font_size, color, outline_size/outline_color, margin_x/margin_y, and swap. That's the whole feature set - no padding, no leading zeros, no date formatting.
The inputs that matter
number- the starting frame number, as a string (default "0").frame- how many images to generate (1–100).step- the increment between frames (1–100).font_size- this one defaults to 50, because a frame counter that's unreadable is useless.align,wrap,color,outline_*,margin_*,width/height,swap- the usual layout and styling.
Output is a batched IMAGE with frame entries.
Installing it
One install, same as everything in the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite
or ComfyUI Manager → search ComfyUI-Text_Image-Composite, restart. Find it under Zho模块组/text. No requirements.txt, no extra dependencies.
Common issues
numbermust be numeric. It's parsed withint(), so "frame_3" will throw aValueError. The field is a string but it needs to look like a number.- This is not a VAE/encode node. It outputs IMAGE tensors; to actually combine the labels with your animation frames you'll composite them with the pack's
ImageComposite_Zho(or a batch-level image operation) before encoding. The natural pattern: use this for the labels, composite each frame, then feed the batch through your video pipeline. framecaps at 100. For longer sequences, either batch in chunks or accept the limit.- No leading zeros. Frame "0" renders as 0, not 0000. If your tooling cares about zero-padding, you're out of luck here.
For animation prep, contact-sheet labeling, or debugging frame order in a video workflow, it's a genuine time-saver. It's the most niche node in the pack, but when you need it, you need it - and there isn't much else in the ecosystem doing exactly this.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| number | STRING | 0 | — |
| frame | INT | 11–100 | — |
| step | INT | 11–100 | — |
| selected_font | COMBO | 11 options: Alkatra, Merienda-Black, Merienda-Bold, Merienda-ExtraBold, Merienda-Light, Merienda-Medium, +5 | |
| align | COMBO | 3 options: left, center, right | |
| wrap | INT | 100–8096 | — |
| font_size | INT | 501–2500 | — |
| color | COLOR | red | — |
| outline_size | INT | 00–8096 | — |
| outline_color | COLOR | blue | — |
| margin_x | INT | 00–8096 | — |
| margin_y | INT | 00–8096 | — |
| width | INT | 5121–8096 | — |
| height | INT | 5121–8096 | — |
| swap | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |