ComfyUI Node

Image Picker

Pick winners before the GPU keeps burning

By TechnoWarrior2·Created 3 months ago·Updated 6 days ago· 3
Image Picker
  • images
  • images
mode
popup_mode
timeout300

You've got a workflow where the cheap part comes first and the expensive part comes second - a batch of 2048px drafts heading into a FaceDetailer loop or a big upscale. Most of those drafts are garbage you'd never want to polish, and the GPU is going to happily refine every single one of them while you watch. Image Picker is the stoplight you insert between the two stages. It pauses the graph, shows you what just came out, and only lets the images you actually click continue through. In single mode a click sends one image straight on; in multi mode you pick several and confirm. Everything else gets dropped, and the run stops cleanly instead of churning through post-processing you were going to delete anyway.

It's a dead-simple IMAGE-in / IMAGE-out node living in the image category. Wire your sampler's decode into it, wire its output into whatever's next, and you've got a human approval gate - the same idea as the community's older cg-image-picker, in a tidy modern form.

How it actually works

Under the hood it's small and honest: the node saves your incoming images through ComfyUI's built-in PreviewImage machinery, builds /view URLs for them, and creates a session. The Python side then just blocks in a polling loop, checking every 0.3 seconds whether you've answered and whether ComfyUI asked for an interrupt. Meanwhile a single JS file listens for the open event and either pops a real browser window or docks a floating overlay inside your current tab.

Two details are worth knowing. First, your selection is applied as indices into the original batch - the node stacks the tensors you picked, so what passes through is your actual generated images, not re-encoded screenshots. Second, cancel, timeout, or picking nothing all raise ComfyUI's interrupt exception, so the workflow stops properly rather than limping on with an empty batch.

The inputs that matter

There are only four, and they're all required. The ones you'll actually touch:

  • images - any IMAGE tensor, straight off your sampler's decode.
  • mode - single (click to send instantly) or multi (click several, then confirm). Multi is how you hand a whole batch of keepers onward.
  • popup_mode - Browser Window or Internal Overlay. The author's own tooltip says it best: Browser Window works everywhere but your browser will likely block it the first time, while Internal Overlay docks a floating panel inside the tab and is the one to use in the ComfyUI Desktop app, where a browser window opens as a plain tab instead of a real popup.
  • timeout - seconds before auto-cancel. Default 300, range 10–3600. This is the one that bites: walk away mid-pick and the countdown ring hits zero, and your run cancels. That's a feature if you want the graph to bail out on its own; otherwise bump it up.

The single images output is the subset of your batch you chose, ready to feed the upscaler or detailer.

Install

The usual two ways, no surprises. ComfyUI Manager, searching "Image Picker", or:

cd ComfyUI/custom_nodes
git clone https://github.com/TechnoWarrior2/comfyui-image-picker

Then restart ComfyUI. That's it - no model files to download, no requirements.txt full of landmines, no API key. It's a few hundred lines of Python plus one JS file, which is a relief in an ecosystem where installing a node can mean inheriting a whole dependency tree.

Gotchas

  • Browser Window gets popup-blocked. Allow it once and it's fine; or just use Internal Overlay.
  • The 1.2.0 rename. This pack renamed its node from the old internal AlexImagePicker to ImagePicker. Workflows saved before the update will show a red missing node after you update - ComfyUI saved the old internal name. Fix: delete the red node, add Image Picker fresh, reconnect images in and out, and re-set mode, popup_mode, and timeout. Nothing else in the workflow is affected.
  • The timeout cancels your run. Set it knowing that.

Where does this earn its keep? Right before anything slow and irreversible - a FaceDetailer pass, a multi-stage upscale, or saving every frame of a long batch. Render cheap, approve as a human, then let the expensive stuff run only on what you'd actually keep.

Categoryimage

Inputs (4)

NameTypeDefaultDescription
imagesIMAGE
modeCOMBO2 options: multi, single
popup_modeCOMBOBrowser Window: opens a separate OS window (works everywhere). Internal Overlay: docks inside the current ComfyUI tab/window as a floating panel -- recommended for the Desktop app where Browser Window opens a new tab instead of a real popup.
timeoutINT30010–3600Seconds to wait before cancelling

Outputs (1)

NameTypeDescription
imagesIMAGE