Nodes/ComfyUI - NeoGriever/NGs Image - Image Progress Bar
ComfyUI Node

NGs Image - Image Progress Bar

Baking a step counter into your output images

By NeoGriever·Created 2 years ago·Updated 2 years ago· 2
NGs Image - Image Progress Bar
    • images
    ◄width512►
    ◄radius8►
    ◄inner_radius6►
    ◄line_width8►
    ◄line_inner_width6►
    ◄color_bar#000000FF►
    ◄color_inner_bar#00FF00FF►
    ◄max7►
    ◄value3►
    ◄smoothing1►

    This one's easy to confuse with the progress bar rgthree adds to the top of your ComfyUI window, so let's get that out of the way first: they're not the same thing. rgthree's bar lives in the browser, telling you how far the whole queue has gotten. This node renders a progress ring as an actual IMAGE - a picture of a progress bar, not a UI element - which you can save, composite, or burn into a frame. It's a genuinely different job: think dashboards, render-farm status boards, or stamping "step 3 of 7" onto a thumbnail grid, not live in-app feedback (ComfyUI's queue UI and rgthree already own that).

    How it works

    It draws two concentric rings with PIL. The outer ring is the track - its size and thickness come from radius and line_width, its color from color_bar. The inner ring is the fill - inner_radius and line_inner_width for size and thickness, color_inner_bar for color - and it's drawn as a partial arc sized to value / max. smoothing looks to control how many segments that arc is built from: low values give you a chunkier, more stepped-looking ring, higher ones a smoother curve.

    The inputs and outputs that matter

    • value and max - the two you'll actually wire up. value is where you are, max is the total; feed these from a batch index and batch count, or a loop counter, and the ring fills accordingly.
    • width - the canvas size (it's drawn square).
    • color_bar / color_inner_bar - hex ARGB strings (#RRGGBBAA) for the track and the fill.
    • radius, inner_radius, line_width, line_inner_width, smoothing - the ring's geometry; defaults are reasonable, worth touching only if you're matching a specific size.

    Output is a single images (IMAGE) - pipe it into Save Image, Preview Image, or a compositor to overlay it on something else.

    How to install it

    Through ComfyUI Manager: search "NeoGriever" or "ComfyUI - NeoGriever," install, restart. No Manager handy? Manual install is just:

    cd ComfyUI/custom_nodes
    git clone https://github.com/NeoGriever/ComfyUI-NeoGriever
    

    then restart ComfyUI. The pack's README doesn't call out a single Python dependency or a model download anywhere - this and every other node here is plain PIL/tensor work - so a restart really is the whole install.

    Common issues & troubleshooting

    It doesn't animate or update live. This renders once per execution, based on whatever value/max you hand it that run. If you want a visible progress sequence - a ring that fills over several frames - you need to drive value from something that changes each iteration (a For Loop node, a batch index) and re-run the node each time; it's not going to poll your sampler's actual step count on its own.

    value greater than max. Nothing in the schema stops you from feeding it a value past max - expect an overfilled or visually odd ring rather than a clean error, so keep the two logically consistent.

    Colors come out wrong. Both color fields are 8-character ARGB hex strings. Get the channel order backwards and you'll get an unexpectedly transparent or off-color ring rather than what you typed into a normal RGB picker.

    Since the pack has no dependencies to conflict with, if this node is missing after install it's almost certainly a registration issue (ComfyUI didn't pick up the folder, or it needs a restart) rather than a version clash with something else in your custom_nodes - the reassuring flip side of a pack this lightweight.

    CategoryNeoGriever/Images

    Inputs (10)

    NameTypeDefaultDescription
    widthINT51264–4096—
    radiusINT84–64—
    inner_radiusINT62–62—
    line_widthINT84–64—
    line_inner_widthINT62–62—
    color_barSTRING#000000FF—
    color_inner_barSTRING#00FF00FF—
    maxINT72–256—
    valueINT30–256—
    smoothingINT11–8—

    Outputs (1)

    NameTypeDescription
    imagesIMAGE—