Nodes/ComfyUI-ImageViewer/bEpic Send To Image Viewer
ComfyUI Node

bEpic Send To Image Viewer

Get a real review panel for ComfyUI

By szprivate·Created 6 months ago·Updated 4 days ago· 1
bEpic Send To Image Viewer
  • input
  • image
tab_name
save_to_outputfalse
file_formatpng
fps24.00
filename_prefixbEpic

ComfyUI's built-in preview is fine until you're doing something serious - batch after batch of generations, a video you need to scrub, two outputs you want side by side. Then you're squinting at a thumbnail inside a node and wishing you had a proper review monitor. That's exactly what this node is: bEpic Send To Image Viewer is the front door to the bEpic Image Viewer, a Nuke/RV-style review panel that floats over your graph.

The idea is simple. Drop this node anywhere a wire has pixels, run the workflow, and the image - or mask, or whole video - lands in a dockable viewer with tabs, a 20-snapshot history per tab, zoom/pan, timeline playback, split-screen comparison, an exposure slider from −4 to +4 EV, and per-channel RGB inspection. If you've ever needed to eyeball whether a generation is actually dark in the shadows or just underexposed in your head, that exposure slider alone is worth the install.

How it works

Mechanically it's a glorified passthrough with a side effect. The node writes the incoming frames to ComfyUI's temp directory as PNGs and pushes them to the viewer over the websocket (bepic.viewer.update); the image output is just the input handed back untouched, so you can hang the node inline in a chain instead of off to the side. Flip save_to_output on and it also persists the frames to ComfyUI's output folder in your chosen format, registering them in prompt history exactly like a SaveImage node. For video, the pack can also eat a native ComfyUI VIDEO object and hand the viewer a playable file.

The inputs that actually matter

Most of these you can leave alone, but three are worth knowing:

  • input - anything with pixels: IMAGE, MASK, or a VIDEO object. The widget accepts * so it won't yell at you, but a node that outputs some exotic non-tensor thing simply won't preview.
  • tab_name - give each Send node a name here. Distinct names create separate tabs, which is what makes the compare workflow work: two tabs, shift-click both, get a split-screen wipe.
  • save_to_output - off by default, and that's the trap: if you expect files on disk and didn't flip it, you'll find nothing. When on, file_format (png, tiff, jpg, bmp, webp, or the video trio mp4/mov/webm) and fps appear. The fps field only matters for the video formats - the UI hides it for stills.

Installing it

ComfyUI Manager is the easy route: search ComfyUI-ImageViewer, install, restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/szprivate/ComfyUI-ImageViewer.git
pip install -r ComfyUI-ImageViewer/requirements.txt

Then restart and click the "Toggle bEpic Image Viewer" button that appears in the top action bar. The requirements are just Pillow and numpy - both already live in ComfyUI, so this is one of the lightest installs you'll do. Video export is the only thing with an extra hidden cost: mp4/mov/webm need imageio and imageio_ffmpeg, which are lazy-loaded and only complained about if you actually ask for a video format without them.

Gotchas

Nothing shows up until you run the workflow - the viewer is fed at execution time, not by wires alone. And read the license before you use this for paid work: the pack is free for personal and non-commercial use, but commercial use is explicitly prohibited without written permission from the author (Sebastian Zilius / bEpic GmbH). The author is a VFX person building this as a Nuke-style review tool, and it shows - in a good way.

Categoryimage/bEpic

Inputs (6)

NameTypeDefaultDescription
input*
tab_nameSTRING
save_to_outputBOOLEANfalse
file_formatCOMBOpng8 options: png, tiff, jpg, bmp, webp, mp4, +2
fpsFLOAT24.000.01–1000
filename_prefixSTRINGbEpic

Outputs (1)

NameTypeDescription
image*