Nodes/Image Chooser Classic/Image Chooser Classic
ComfyUI Node

Image Chooser Classic

The inline picker that keeps your choices on the graph

By heyburns·Created 10 months ago·Updated 2 months ago· 9
Image Chooser Classic
  • images
  • latents
  • masks
  • segs
  • images
  • latents
  • masks
  • selected
  • segs
mode
count1

The sibling node to Image Chooser, and the answer to a specific complaint: sometimes you don't want a full-screen overlay hijacking the canvas. Image Chooser Classic renders the thumbnails inside the node body as an inline widget, and it auto-resizes to fit the entire batch. Same pausing engine, same selection logic - just a different way to look at it.

It's part of the same "Image Chooser Classic" pack (heyburns), a modern re-implementation of chrisgoringe's cg-image-picker that drops the legacy compatibility shims. Think of the overlay as the showman and this as the workbench: Classic keeps everything visible in the graph, so you can watch the batch land, pick, and see your choice sit there in the workflow JSON. That makes it the better choice when you're building or debugging a workflow and want the interaction to stay in-context rather than floating over it.

How it works

Under the hood it's the same BaseChooser machinery as its sibling - it flattens the batch of images/latents/masks, sends previews to the front-end over a websocket, then blocks on a message broker until you click. The only real difference is a classic_widget chooser type: it registers the thumbnails in the node body instead of opening an overlay, and it resizes its widget to show the whole batch at once. Click to select, run continues, only your picks flow downstream.

The inputs that matter

Same two required inputs as the overlay version, and mode is where you'll spend your time:

  • mode - Always pause opens the widget every run. Repeat last selection re-applies your previous indices silently (no dialog), and Repeat last cached selection only does that when the incoming images are identical to last time. Only pause if batch sails through single images and only asks when there are two or more - the sensible default once you trust the workflow. Pass through forwards everything untouched, and Take First n / Take Last n auto-select without any dialog.
  • count - how many images Take First n / Take Last n keep. Default 1.

Optional inputs images, latents, masks, and segs all come out in matching order: wire latents in and you get the latent tensors of just what you picked, which is how you re-sample a chosen latent instead of re-rolling. The selected output is a comma-separated STRING of your indices - useful if you want to log or branch on which pick happened.

Installing it

Same install as the whole pack - no dependencies, no model downloads. Via ComfyUI Manager search "Image Chooser Classic", or:

cd ComfyUI/custom_nodes
git clone https://github.com/heyburns/image-chooser-classic.git

Restart ComfyUI and hard-refresh the browser so the new JS loads (Ctrl+Shift+R). Add Node → search "Image Chooser Classic".

Gotchas

  • The inline widget listens for the same hotkeys (1–9 toggle, 0 confirm/cancel, Esc cancel), but since it's in the node, your clicks are the more natural path.
  • Same stale-cache trap as its sibling: overlay not rendering and widget not rendering usually means the old web/extensions/ JS is still lingering from a previous cg-image-picker install. Clear it, restart, hard-refresh.
  • Don't run it alongside the legacy cg-image-picker - the pack posts to its own endpoint so they won't crash into each other, but the author explicitly recommends having just one, and the legacy node is effectively dead.
  • Always pause re-runs everything downstream on every pick. If you're just iterating prompts, Repeat last selection or Only pause if batch will save you from re-doing the slow parts for no reason.
Categoryimage_chooser

Inputs (6)

NameTypeDefaultDescription
modeCOMBO8 options: Always pause, Repeat last selection, Repeat last cached selection, Only pause if batch, Progress first pick, Pass through, +2
countINT11–999
imagesoptIMAGE
latentsoptLATENT
masksoptMASK
segsoptSEGS

Outputs (5)

NameTypeDescription
imagesIMAGE
latentsLATENT
masksMASK
selectedSTRING
segsSEGS