Nodes/A2V Multi Image Composite/A2V Multi Image Composite
ComfyUI Node

A2V Multi Image Composite

The compositor that drops a desktop window into your ComfyUI graph

By aiartvn·Created 2 years ago·Updated 2 years ago· 1
A2V Multi Image Composite
  • background
  • image1
  • image2
  • image3
  • image4
  • image5
  • IMAGE
x_pos10
y_pos10
scale11.0
rotation10
opacity11.0
blend_mode1
flip_h1false
flip_v1false
enable_previewtrue
x_pos20
y_pos20
scale21.0
rotation20
opacity21.0
blend_mode2
flip_h2false
flip_v2false
x_pos30
y_pos30
scale31.0
rotation30
opacity31.0
blend_mode3
flip_h3false
flip_v3false
x_pos40
y_pos40
scale41.0
rotation40
opacity41.0
blend_mode4
flip_h4false
flip_v4false
x_pos50
y_pos50
scale51.0
rotation50
opacity51.0
blend_mode5
flip_h5false
flip_v5false

A2V Multi Image Composite is a node that lets you layer up to five images onto a background and move them around live - drag, scale, rotate, flip, reorder, and blend with your mouse instead of guessing numbers. ComfyUI's own approach to compositing is "type coordinates into the node," which is miserable when you're eyeballing where a logo sits or where a character's feet should land. This node replaces the guess-and-check with an interactive canvas.

Fair warning before you install: this is an obscure pack. The repo is a single upload with no release history, no stars, and no real community discussion anywhere I could find. It's not malicious as far as I can tell from reading the source - it's just a small utility someone built and published. That's the usual rule for tiny unknown nodes: read the code if you can, don't run it on a machine you care about, and don't build your whole workflow on it.

How it works

Under the hood it's OpenCV and PIL. Each image gets transformed with cv2.warpAffine (scale, rotation, flips, Lanczos resampling), then composited onto the background in layer order. If a source has an alpha channel, it's respected - rotating an RGBA image leaves transparent corners instead of black boxes, which is a nice touch for foreground elements.

When enable_preview is on (the default), the node opens native desktop windows - a preview, a control panel with trackbars, and a layers panel - and then blocks the entire workflow in a loop until you press ESC, ENTER, or Q. The mouse controls are: click to select a layer, drag to move, S/T toggles scale/rotate mode for the mouse wheel, H/V flip, B cycles blend modes, G shows a grid, C centers the layer. That loop is why this feels like a mini image editor grafted onto a node graph.

The inputs that matter

Only two inputs are required: background and image1. Images 2–5 are optional and come with the same eight controls each: x_pos/y_pos (−4096 to 4096), scale (0.1–10), rotation (−180 to 180), opacity (0–1), blend_mode (normal, multiply, screen, overlay), and flip_h/flip_v. Position is the one you'll actually set - it's the top-left corner of the layer on the background. enable_preview decides whether you get the interactive window or just a straight run.

The single output is IMAGE, and the node is marked as an output node, so you can wire it straight into a Save Image node.

The traps

Two things will bite you, both visible in the source.

First, the preview opens on the machine running ComfyUI, not in your browser. If ComfyUI runs on a remote box or a headless server, cv2.imshow has no display to draw on and the preview errors out. Run ComfyUI on a desktop with a real display, or set enable_preview to false and drive everything from the widgets - the node composites fine either way, you just lose the interactivity.

Second - and this one is sneaky - opacity and blend mode only affect the preview, not the saved output. The preview path renders with proper opacity and blending, but the final output pass uses a plain PIL paste, which bakes in scale, rotation, flips, and position only. Set a layer to 50% multiply in the preview, close it, and the exported image shows it at full opacity, normal blend. The preview is lying to you about those two settings. Adjust them in the widget values if you actually want them applied.

Also worth knowing: your interactive tweaks mutate state inside the running node, so the output reflects them, but nothing writes back to the widgets - the workflow JSON won't record what you did. Re-running resets everything to the input values.

Installing

ComfyUI Manager is the easy route - search "A2V Multi Image Composite" and install. Or, from ComfyUI/custom_nodes:

git clone https://github.com/aiartvn/A2V_Multi_Image_Composite

then restart ComfyUI. Dependencies are numpy, opencv-python, Pillow, and torch - and really only opencv-python is new to a stock install, since the other three are ComfyUI core. No model files, no API key, nothing to download.

Is it worth it? If you regularly drop logos, watermarks, or foreground layers onto generated images and hate typing coordinates, it's a nice experiment. If you just want predictable compositing you can reproduce later, reach for Image Composite or a simple PIL paste node instead - those don't freeze your workflow and don't lie about opacity.

CategoryA2V/Image

Inputs (47)

NameTypeDefaultDescription
backgroundIMAGE
image1IMAGE
x_pos1INT0-4096–4096
y_pos1INT0-4096–4096
scale1FLOAT1.00.1–10
rotation1FLOAT0-180–180
opacity1FLOAT1.00–1
blend_mode1COMBO4 options: normal, multiply, screen, overlay
flip_h1BOOLEANfalse
flip_v1BOOLEANfalse
enable_previewBOOLEANtrue
image2optIMAGE
x_pos2optINT0-4096–4096
y_pos2optINT0-4096–4096
scale2optFLOAT1.00.1–10
rotation2optFLOAT0-180–180
opacity2optFLOAT1.00–1
blend_mode2optCOMBO4 options: normal, multiply, screen, overlay
flip_h2optBOOLEANfalse
flip_v2optBOOLEANfalse
image3optIMAGE
x_pos3optINT0-4096–4096
y_pos3optINT0-4096–4096
scale3optFLOAT1.00.1–10
rotation3optFLOAT0-180–180
opacity3optFLOAT1.00–1
blend_mode3optCOMBO4 options: normal, multiply, screen, overlay
flip_h3optBOOLEANfalse
flip_v3optBOOLEANfalse
image4optIMAGE
x_pos4optINT0-4096–4096
y_pos4optINT0-4096–4096
scale4optFLOAT1.00.1–10
rotation4optFLOAT0-180–180
opacity4optFLOAT1.00–1
blend_mode4optCOMBO4 options: normal, multiply, screen, overlay
flip_h4optBOOLEANfalse
flip_v4optBOOLEANfalse
image5optIMAGE
x_pos5optINT0-4096–4096
y_pos5optINT0-4096–4096
scale5optFLOAT1.00.1–10
rotation5optFLOAT0-180–180
opacity5optFLOAT1.00–1
blend_mode5optCOMBO4 options: normal, multiply, screen, overlay
flip_h5optBOOLEANfalse
flip_v5optBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE