Image Picker
Pick the good one out of a batch, without the thumbnail whack-a-mole
- batch
- image
Generate eight images, like four of them, want to keep them all in play while you decide. Normally that means a manual "save the batch, eyeball the folder" shuffle. Image Picker exists so the decision is part of the graph: it takes a batch, shows you the thumbnails, and you click the one you want. That selected image becomes the stage's output, wired straight into whatever's next.
It's so fundamental to how ComfyTV works that the README's quick tour leads with it: you generate, a picker auto-spawns, you pick, and the picked image feeds the next stage. If you've used ComfyUI long enough to dread "which index did I want again," this is the node that kills that.
How it works
The interesting bit is the pool. It's a JSON blob ({images:[...]}) that accumulates images: as you run upstream generation stages, their batches get appended to the pool, deduplicated by image_url, and they survive regeneration and disconnection - so you can compare generations side by side instead of losing the old batch the moment you run a new one. The pool is UI-managed: a Clear button empties it.
The batch input is deliberately flexible - it accepts either a COMFYTV_IMAGES batch or a single COMFYTV_IMAGE, and a single image is treated as a one-item batch. That's why you can wire it almost anywhere. selected_index (1-indexed, hidden) is "set by clicking a thumbnail," and the output is the single chosen image.
The hidden inputs, explained once
project_id and parent_output_id are the internal lineage inputs marked "Internal - populated by the projectStore on the frontend." You never set them by hand. Every ComfyTV stage carries these; they're the plumbing behind per-node Run, where each stage executes on its own and downstream nodes consume a snapshot of the last output.
Installing it
Same pack, same steps:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
or ComfyUI Manager ("ComfyTV"), full backend restart, then ComfyTV → Compose. The one gotcha that bites people: on ComfyUI Desktop, macOS, or multiple installs, clone into the running instance by absolute path and confirm custom_nodes/ComfyTV/__init__.py exists (not nested), then fully restart. The pack declares no pip deps, and a browser-side picker won't hit the PyAV wall some video stages do.
Common issues
- Old images vanished - the pool is emptied by the Clear button; if you hit it, they're gone. Otherwise the pool is designed to keep old batches through regeneration, so this shouldn't happen by accident.
- The picker isn't showing new generations - the pool appends and dedupes by
image_url; a regenerated image with the same URL won't be added twice. That's by design, not a bug. - The selected image doesn't match what I clicked -
selected_indexis driven by the thumbnail click. If it looks wrong, click the thumbnail again. - Nothing is selectable - no batch is wired in and the pool is empty. Give it a source.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| selected_index | INT | 11–999 | Which item to extract (1-indexed). Hidden — set by clicking a thumbnail. |
| pool | STRING | Accumulated image pool (JSON {images:[...]}). Managed by the UI: new upstream batches are appended (deduped by image_url) and survive regeneration/disconnect; emptied by the Clear button. | |
| batchopt | COMFYTV_IMAGES,COMFYTV_IMAGE | Upstream image source. Accepts either a batch (COMFYTV_IMAGES) or a single image (COMFYTV_IMAGE); a single image is treated as a one-item batch. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | COMFYTV_IMAGE | — |