Nodes/Vantage-NodesV2/Vantage Image Compositor
ComfyUI Node

Vantage Image Compositor

Drag your own pixels around instead of re-prompting

By vantagewithai·Created 15 days ago·Updated 11 days ago· 3
Vantage Image Compositor
  • images
  • masks
  • image
  • transforms
◄width1024►
◄height1024►
◄padding100►
◄normalize_heightfalse►
◄auto_continuefalse►
◄invert_masksfalse►
◄composition{}►
◄input_signature►

The honest state of this corner of ComfyUI is that people leave. The KB's post-processing doc puts it well: the operations are old and simple, but the node ecosystem around them is uneven, so "people leave ComfyUI for a compositor more often than the 'it's just a gamma curve' framing suggests they should have to." This node is an attempt to close that gap - a layer editor inside the graph, with no Fabric.js and no extra installs.

What it is

Feed it an IMAGE batch and every image becomes an independently editable layer. That's the headline feature, and a direct shot at Enrico's Compositor V4 pair - except there's no eight-layer ceiling and Fabric.js isn't required.

The node opens an editor in its own body: canvas, layer list, drag to move, corner handles to scale (Shift for independent width/height), top handle to rotate (Shift for 15° steps), plus opacity, flips, stacking order, alignment, grid snapping, background colour, and a separate draw/erase foreground layer. Layer visibility is a checkbox. Layout saves in the workflow, so reopening a graph gives you back exactly what you arranged.

Inputs that matter

images is required and is the whole source of content - one image per layer. masks is optional and does the alpha work: a single mask applies to every image, otherwise masks pair up by index, and missing masks leave that image's alpha alone. invert_masks flips the convention (1 visible, 0 transparent by default). Existing RGBA alpha gets multiplied by the mask, which is what you want when you're dropping cutouts from a background-removal node onto a canvas.

width and height are the output canvas. padding only affects the editor's working space - it gives you elbow room around the canvas without changing the output dimensions. normalize_height resizes each layer to canvas height with aspect preserved and fits its initial placement inside the canvas; turn it on when you're mixing sizes and don't want to hand-scale every tile.

Then auto_continue, which is the interesting one. Leave it off and the node pauses downstream execution whenever the input images, masks or canvas settings change - arrange your layers, then press Run again to render the current layout and carry on. Turn it on and it renders immediately with the layout as it stands. Off is the mode for designing; on is the mode for a workflow you've already designed.

composition and input_signature are the node's own state strings - where the layout and the input fingerprint live. Don't edit them.

Outputs

image is one flattened RGB composite at your canvas size. transforms is a STRING of JSON describing the layout: zero-based layer indices, centre positions, dimensions, angles, flips, opacity, visibility, background, strokes. Wire image into Save Image or anything else; wire transforms only if you need the geometry elsewhere.

There is no Save button and no filename output. Input previews go to ComfyUI's temp directory only. If you want a file, add a Save Image node.

What it's actually for

Composite work that isn't worth a trip to Photoshop: a character sheet from four generations, a cutout subject on a backdrop, product shots on a consistent ground, a thumbnail grid. With auto_continue off you iterate the arrangement visually and re-run only the composite - the upstream branch doesn't regenerate just because you nudged a layer 20 pixels.

Under the hood it's PIL doing an affine transform per layer onto an RGBA canvas, alpha-compositing in order, then converting to RGB; strokes draw on a separate foreground layer before that conversion. Nothing exotic - which is why it's fast.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/vantagewithai/Vantage-NodesV2.git

Restart ComfyUI, hard-refresh the browser, and find it under Vantage/Image. ComfyUI Manager should also install the pack as Vantage-NodesV2; the clone is the documented route.

No extra packages: the node uses Pillow, numpy and torch, all of which ComfyUI already has, and the pack declares no dependencies in pyproject.toml. Two real requirements instead - a recent ComfyUI, and a frontend new enough to support the widget APIs this editor uses. The README notes the pack works in both classic node mode and Nodes 2.0, which is more than several bigger packs can currently say.

Troubleshooting

Canvas empty after connecting images. Run once to populate the editor, then arrange. With auto_continue off, the first Run is the review pass, not a render.

Edits don't show up in the output image. The layout is committed on the Run after you arrange. Press Run again.

Downstream stopped and never came back. That's the pause, not a crash - check the node's status and Run again.

Layers look squashed or cropped. normalize_height is on and capping things at canvas height; or your canvas is smaller than the composite you designed. Check width/height, not the layer handles.

CategoryVantage/Image

Inputs (10)

NameTypeDefaultDescription
imagesIMAGE—
widthINT10241–16384—
heightINT10241–16384—
paddingINT1000–16384—
normalize_heightBOOLEANfalse—
auto_continueBOOLEANfalse—
invert_masksBOOLEANfalse—
compositionSTRING{}—
input_signatureSTRING—
masksoptMASK—

Outputs (2)

NameTypeDescription
imageIMAGE—
transformsSTRING—