PVL LumaPhoton Reframe (fal.ai)
Repaint your photo into a new aspect ratio with Luma Photon
- image
- IMAGE
You shot a portrait and the client wants a 16:9 banner. You have a 4:5 product shot and need a 9:16 reel. Cropping loses the subject; upscaling-and-cropping looks worse. Luma Photon's "reframe" is the model built for exactly this: it takes your image, fits it into a target aspect ratio, and paints in the new space so the result looks composed rather than cropped. This node wraps fal's luma-photon/reframe endpoint - image in, aspect ratio chosen, reframed image out, no local model.
It's part of the ComfyUI Assistant Node pack from pvlprk. The mechanism is the pack's standard fal flow: your image is base64-encoded and sent to the endpoint, the job is polled, and the result comes back as a normal IMAGE tensor.
How it works
The only required inputs are image and aspect_ratio (1:1, 16:9, 9:16, 4:3, 3:4, 21:9, or 9:21; default 16:9). The model repositions your content into that shape and regenerates whatever the new frame needs. Beyond that, the node exposes the endpoint's finer controls as optional inputs, all defaulting to -1 (meaning "not set" and not sent):
prompt- an optional instruction for what to paint into the extended area.grid_position_x/grid_position_y- position the source image within an output grid.x_start/x_end/y_start/y_end- define a crop region of the source to keep and reframe, rather than the whole image.
The -1 default is a nice touch: leave them alone and the endpoint picks the framing; set them and you're steering exactly which part of the photo matters. Luma Photon is Luma AI's fast, efficient model, so these jobs are quick - this is the endpoint you'd reach for when you need a rapid reshoot-style reframe rather than a heavyweight edit.
The inputs that matter
image- your source.aspect_ratio- the target shape; this is the whole job.prompt(optional) - describe what should fill the new space.
Output: one IMAGE, already at the target aspect ratio.
Installing it
Part of pvlprk/comfyui-pvl-api-nodes. Install via ComfyUI Manager (search "ComfyUI Assistant Node") or:
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Set your fal.ai key as FAL_KEY (or FAL_API_KEY / FAL_CLIENT_KEY), restart, and make sure you have credits.
Where people get burned
The usual pack-wide traps - unset FAL_KEY, blank-placeholder errors hiding in the console. The reframe-specific gotcha: the model is reconstructing the scene, so content that's only partially in frame can get re-interpreted in the extended area - a half-visible arm might come back as a full arm you didn't have. If the result's composition isn't what you want, that's what the grid-position and crop-region inputs are for; a tight crop with x_start/x_end/y_start/y_end gives the model a lot less to invent.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| aspect_ratio | COMBO | 16:9 | 7 options: 1:1, 16:9, 9:16, 4:3, 3:4, 21:9, +1 |
| promptopt | STRING | — | |
| grid_position_xopt | INT | -1-1–2147483647 | — |
| grid_position_yopt | INT | -1-1–2147483647 | — |
| x_startopt | INT | -1-1–2147483647 | — |
| x_endopt | INT | -1-1–2147483647 | — |
| y_startopt | INT | -1-1–2147483647 | — |
| y_endopt | INT | -1-1–2147483647 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |