View_image_compare
A/B wipe two images in the graph — no more eyeballing side-by-side
- image_a
- image_b
Comparing two generated images is the most common thing you do after a run, and ComfyUI's default answer - two Preview nodes sitting three feet apart on the canvas - is genuinely bad at it. Small differences in detail, lighting or composition vanish when your eyes have to jump between separate panels. View_image_compare is the fix: it stacks image A and image B in the same viewer with a draggable wipe divider between them, so you slide left and right across the seam and the difference jumps out at you.
The controls
Two inputs, both plain IMAGE: image_a and image_b. Drop your reference/first attempt in one and your new output in the other. The node is a pure output node - no data comes out, it exists only to show you something - which means it runs at the end of a queue and ComfyUI treats it like any other preview. The controls are:
direction-左右(left/right) or上下(up/down). Wipe vertically for tall images or when the horizontal compare puts the interesting detail on opposite sides.split_position- 0–100, where the divider sits. You'll mostly drag it in the widget itself rather than typing, but the value is stored with the workflow, which is handy: your "50/50" compare state survives a save-and-share.opacity- the bonus feature that makes this more than a wipe. It controls the transparency of the top layer (image B), from fully solid down to invisible. That turns the node into an onion-skin/ghost overlay - set it around 30–50% and you can literally see the pixels that moved between two nearly identical frames. For judging whether a re-roll actually changed anything, or whether your refine pass altered detail you wanted kept, this is the killer mode.
Two honest gotchas
Two honest gotchas. First, the node only shows the first frame of each batch - the code saves image_a[:1] and image_b[:1] to the preview. Wire in a 64-frame batch of video frames and you'll compare frame 1 of each, not a video. If you want to compare frame 37, extract it first with a frame-pick node. Second, image B sits on top and is the one clipped and faded by the controls, so the two inputs are not symmetric in feel: A is your solid baseline, B is the one being revealed and blended. Put the version you're less sure about in B.
Why it earns a place in your graph
In the multi-pass world this pack lives in - first pass vs. refine, pre-upscale vs. post-upscale, seed hunt A vs. seed hunt B - the whole question is usually "what actually changed, and is it better?" A wipe with an opacity slider answers both faster than any two preview nodes. It's also refreshingly dependency-free: no models, no VAE, nothing to download beyond the pack itself.
Installing it
Install is the standard pack route:
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
into custom_nodes, run install.bat, restart - and remember the compare UI is frontend code, so if the viewer stays blank after an update, a hard browser refresh is the first thing to try. The node does all its real work on the backend (saving the two preview images); the widget just lays them on top of each other with CSS clipping.
Is it going to replace a proper image-diff tool for serious QC? No - if you want per-pixel difference maps or histogram-level analysis, you want a real comparison app. But for the 95% case of "is this better than that, and where exactly," a wipe slider in the node itself beats exporting and opening an external viewer every single time.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_a | IMAGE | — | |
| image_b | IMAGE | — | |
| direction | COMBO | 2 options: 左右, 上下 | |
| split_position | FLOAT | 500–100 | — |
| opacity | FLOAT | 1.000–1 | — |
Outputs (0)
No outputs