arkennemasis fal · Flux 2 LoRA Gallery Add Background · $0.021/MP
Product shots on white, in, real scenes out
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- images
- image_paths
- seed
- prompt
- info
Every product shoot ends the same way: a clean cut-out of the object on white, and a client who wants it in a café. This node is the shortest path between those two things - you feed it the white-background shot, tell it what background you want, and it hands back a composited image at $0.021 per processed megapixel.
What it is
One of eleven called-out style endpoints fal publishes under flux-2-lora-gallery: a fixed LoRA trained for one job, bolted onto Flux 2, exposed here as a single node. The pack is a thin client - it uploads your picture, submits to fal's queue, waits, downloads into output/fal/fal-ai_flux-2-lora-gallery_add-background/. There's a lora_scale box because the style is applied as a LoRA, and that's the single most useful knob on the node.
Inputs
image_1 is required and the tooltip is specific about what it wants: an image with a white or clean background. The model is adding, not masking - feed it a cluttered photo and you get a cluttered photo with more clutter. Sockets run up to image_6 and batches count, so you can hand it several product shots in one request - they're sent in socket order, first picture of socket 1 is number 1, and every picture is billed as processed megapixels.
prompt must start with Add Background followed by your description - the default is literally Add Background forest. The tooltip says to keep the prefix, and the model expects it. This is the part where you get to be specific: "Add Background a sunlit café terrace, shallow depth of field, no visible text".
lora_scale (0–2, default 1) is the strength of the effect. Push past 1 when the model is being timid about the new scene; pull it under 1 when it starts eating the product.
guidance_scale (default 2.5) and num_inference_steps (default 40) are the generation dials - 40 steps is generous, and you can trade some of that for time. acceleration is none or regular. image_size defaults to square_hd, so a vertical product shot comes back square unless you pick a preset or custom; num_images (1–4) multiplies the bill; seed at -1 lets the model choose; output_format and the safety checker are the usual pair - flagged images return black, and disabling the checker needs fal account authorisation.
max_cost_usd stops the run before upload if the estimate is over the cap. reuse_identical_run fingerprints your settings and the picture bytes so an identical re-run is free. extra_json passes through fal fields the node has no box for, and max_concurrent keeps simultaneous paid calls in check.
Outputs
images is the composited result - straight into a save node or a contact sheet. image_paths, seed, prompt and info are the record: info holds the request id, the cost estimate, the saved files and fal's full answer. That JSON is worth keeping when you're billing someone for a batch.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then the key goes in the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Nothing to pip install for the fal nodes - standard library only. There's no key field on the node, by design, so a key never ends up inside a shared workflow.
Where people get burned
Contrast and shadow. A white-background product shot has flat lighting; drop it into a forest and the object often still reads as flat, because the model is compositing rather than relighting. Ask for the light in the prompt ("warm late-afternoon sun from the right") or expect to match it downstream. Second: the model loves adding set dressing near your product - text, signage, small props - so say what you don't want.
Third, cost: it bills processed megapixels, which includes the input, so a 2MP source and a 1MP output is closer to $0.063 than the $0.021 the badge suggests. And this is a paid third-party call - your product photo is uploaded to fal's CDN before anything renders. For a client's unreleased product, check that's acceptable before you batch forty of them.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| image_1 | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| prompt | STRING | Add Background forest | The prompt describing the background to add. Must start with 'Add Background' followed by your description. Empty leaves it out. |
| image_size | COMBO | square_hd | The size of the generated image. If not provided, the size of the input image will be used. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| guidance_scale | FLOAT | 2.500–20 | The CFG (Classifier Free Guidance) scale. Controls how closely the model follows the prompt. |
| num_inference_steps | INT | 404–50 | The number of inference steps to perform. |
| acceleration | COMBO | regular | Acceleration level for image generation. 'regular' balances speed and quality. |
| seed | INT | -1-1–2147483647 | Random seed for reproducibility. Same seed with same prompt will produce same result. -1 leaves it to the model. |
| enable_safety_checker | BOOLEAN | true | Whether to enable the safety checker for the generated image. Disabling it requires account authorization; unauthorized requests are always checked. |
| output_format | COMBO | png | The format of the output image |
| num_images | INT | 11–4 | Number of images to generate |
| lora_scale | FLOAT | 1.000–2 | The strength of the add background effect. |
| image_2opt | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_3opt | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_4opt | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_5opt | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_6opt | IMAGE | The URLs of the images. Provide an image with a white or clean background. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |