ComfyUI Node

Text_Image_Frame_Zho

Auto-number an entire animation's frames without hand-typing each one

By ZHO-ZHO-ZHO·Created 3 years ago·Updated 2 years ago· 123
Text_Image_Frame_Zho
  • color
  • outline_color
  • image
number0
frame1
step1
selected_font
align
wrap10
font_size50
outline_size0
margin_x0
margin_y0
width512
height512
swapfalse

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

  • number must be numeric. It's parsed with int(), so "frame_3" will throw a ValueError. 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.
  • frame caps 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.

CategoryZho模块组/text

Inputs (15)

NameTypeDefaultDescription
numberSTRING0
frameINT11–100
stepINT11–100
selected_fontCOMBO11 options: Alkatra, Merienda-Black, Merienda-Bold, Merienda-ExtraBold, Merienda-Light, Merienda-Medium, +5
alignCOMBO3 options: left, center, right
wrapINT100–8096
font_sizeINT501–2500
colorCOLORred
outline_sizeINT00–8096
outline_colorCOLORblue
margin_xINT00–8096
margin_yINT00–8096
widthINT5121–8096
heightINT5121–8096
swapBOOLEANfalse

Outputs (1)

NameTypeDescription
imageIMAGE