Premium apps Part of Lumina

Node Compositor for Images and Short Clips

Run a node graph — keying, grading, LUTs, masks, merges — on images or a short clip.

PNG, JPEG or WebP up to 2 megapixels, or a clip (MP4, MOV, WebM) up to 10 seconds — frames are scaled to at most about 0.4 megapixels. Image input nodes with the slot "Main image" read it.

Read by image nodes with the slot "Background image" (green-screen and sky presets use it; without it they use a gradient).

More options

Format: lumina-compositor version 1 (schema at /static/apps/lumina/compositor.schema.json). Copy it from Lumina → Compositor.

Used by LUT nodes without their own .cube data, and replaces the warm fade in the LUT grade preset.

Try an example: Green-screen plate over a new background (synthetic sample) · Sky replacement with a luma key and a generated evening sky · Custom graph: colour spotlight, curve and vignette

More about this tool

How it works

Evaluates a Lumina compositor graph (or a preset: green-screen composite, product shot on a gradient, LUT grade, sky replacement) on your images in linear light with premultiplied alpha. Porter–Duff merges with W3C blend modes, chroma/luma/difference keys, .cube LUTs, masks and filters; returns the result and a report for every node. Short clips are processed frame by frame.

  • Uploads are decoded to 8-bit sRGB (auto-oriented), converted to linear light with the IEC 61966-2-1 transfer function and premultiplied by alpha; every node output is one Float32 RGBA (or mask) buffer at the canvas size (0 = size of the main image). Image input nodes fit their slot image with Catmull-Rom resampling (pre-blurred when shrinking).
  • The graph is validated first (unknown types, parameter ranges, missing inputs, image/mask type mismatches, cycles, exactly one Output node) and evaluated in dependency order; identical sub-graphs are evaluated once (content-hash cache).
  • Merge implements the W3C Compositing and Blending formulas: Cs′ = (1 − αb)·Cs + αb·B(Cb, Cs), co = αs·Fa·Cs′ + αb·Fb·Cb with Porter–Duff fractions Fa/Fb; blend functions see un-premultiplied colour in linear light or sRGB values (your choice). Colour nodes un-premultiply first; levels, curves, HSL, ASC CDL and LUTs work on sRGB-encoded values, exposure, white balance and vignette in linear light.
  • The chroma key is a balanced colour-difference keyer: α = 1 − gain·m(C)/m(K) with m = dominant channel − balanced mix of the other two, then the backing colour is un-mixed (α·F = C − (1 − α)·K) and spill limited. Text nodes are drawn with DejaVu fonts by ImageMagick on the server (system fonts in the browser).
  • Clips (up to 10 s) are decoded by ffmpeg to RGBA frames, the graph runs per frame (nodes that do not depend on the clip are evaluated once), and the frames are encoded as H.264 MP4 with the original audio as AAC. Video has no alpha channel: transparent results are shown on black.

Sources

Use this tool in a premium app

These free programs for your browser have this tool built in, next to everything else the task needs.

  • Lumina Photo editor & image toolkit

    Bring out what you saw. A free photo studio, right in your browser.

    Open Lumina

  • Reelcraft Audio, video & image batch studio

    Audio, video & image batch studio: cut, convert, compress, subtitle, reframe

    Open Reelcraft

Related tools

How to use the Node Compositor for Images and Short Clips

Run a compositing graph or a preset — green screen, product shot, LUT grade, sky replacement — on your images or a short clip, and read the per-node report.

What it is for

Compositing jobs are rarely one filter: a green-screen shot needs a key, a cleaner matte edge, a new background and a merge. This tool runs such a chain as a node graph: every node takes images or masks from earlier nodes and passes its result on, and the Output node is the picture you download.

Pick one of four presets (green-screen composite, product shot on a gradient, colour grade with a LUT, sky replacement with a luma key) or paste a graph you built in Lumina's Compositor with Copy graph JSON. The main image feeds image nodes with the slot "Main image"; an optional background and extra image feed the other slots, and an optional .cube file fills LUT nodes. A short MP4, MOV or WebM clip (up to 10 seconds) is processed frame by frame and comes back as an H.264 MP4. Keys work on colour and brightness; there is no subject detection or motion tracking.

Worked example

The first example uploads a synthetic green-screen plate (192 × 128 pixels, generated by Lumina, not a real photo) and an evening backdrop with the Green-screen composite preset. The tool evaluated 8 nodes into a 192 × 128 PNG. The per-node report shows the chain at work: the plate covers 100 %, the chroma key leaves 28.8 % of the pixels visible (the figure), the matte keeps that value through the edge blur, and after the merge the output is opaque again at 100 % with a mean luma of 140.87.

Leaving the background out changes only one node: the preset swaps the image input for a generated radial Backdrop gradient, and the mean luma of the result rises to 159.8.

The second example uses the Sky replacement preset on a synthetic landscape. "Bright areas" (the luma key) covers 47.5 %, the "Upper part only" rectangle 62 %, their intersection — the sky mask — 47.42 %, and the inverted foreground mask 51.52 %. Bright rocks below the horizon stay in the picture.

How to read the result

  • Nodes evaluated counts the nodes the Output depends on; unconnected nodes are listed as warnings and skipped.
  • The per-node report follows the evaluation order. Coverage is the mean alpha of an image (or the mean value of a mask) in percent; mean luma is the average brightness on a 0–255 scale. A key that leaves 0 % or 100 % coverage did nothing useful.
  • The graph JSON download is exactly what was evaluated, preset parameters included; open it in Lumina → Compositor to fine-tune it.
  • For clips, nodes recomputed per frame shows how much work depends on the clip; generated backgrounds are evaluated once.

Tips and common mistakes

  • Light the screen evenly. The chroma key compares each pixel with one backing colour; a gradient across the screen leaves a faint veil.
  • Use PNG for keyed results: JPEG has no transparency and is flattened on white.
  • Graph sizes of 0 mean "size of the main image". Set an explicit canvas size when your inputs differ in size.
  • Video has no alpha channel. A transparent output turns black in the MP4, so always end a video graph with a merge over a background.
  • Text nodes use DejaVu fonts on the server and your system fonts in the app; text can differ slightly between the two.

FAQ

Is the result the same as in Lumina's Compositor?

Yes, for the same input pixels. The app and this tool run the same engine; only image decoding differs (your browser versus ImageMagick), and text nodes use different fonts.

Which blend modes and operators are supported?

Merge nodes offer the Porter–Duff operators (over, under, in, out, atop, xor, plus and more) and twelve blend modes from the W3C Compositing and Blending specification plus additive blending, evaluated in linear light or on sRGB values.

Can I apply my own LUT?

Yes. Upload a .cube file: it fills every LUT node without its own data and replaces the warm fade LUT in the grading preset.

Why are clips limited to 10 seconds?

Every frame runs through the whole graph on the server. The limit keeps one request within the processing time; longer clips can be cut first, for example in a Reelcraft recipe.

Guide last updated:

For scripts and AI agents

  • JSON API: POST https://luminacompositor.usefulweb.app/api/v1/calculate (same calculation as this page)
  • Interface description: OpenAPI 3.1 · AI guide: llms.txt
  • MCP server (Streamable HTTP): https://luminacompositor.usefulweb.app/mcp · tool name lumina_compositor
Example request
curl -s -X POST https://luminacompositor.usefulweb.app/api/v1/calculate \
  -H 'content-type: application/json' \
  -d '{…see OpenAPI examples…}'
Feedback · ideas & bug reports welcome