Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux 2 LoRA Gallery Virtual Tryon · $0.021/MP
ComfyUI Node

arkennemasis fal · Flux 2 LoRA Gallery Virtual Tryon · $0.021/MP

Person plus garment in, worn outfit out

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux 2 LoRA Gallery Virtual Tryon · $0.021/MP
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • images
  • image_paths
  • seed
  • prompt
  • info
◄prompt►
◄image_sizesquare_hd►
◄image_size_width1024►
◄image_size_height1024►
◄guidance_scale2.50►
◄num_inference_steps40►
◄accelerationregular►
◄seed-1►
◄enable_safety_checkertrue►
◄output_formatpng►
◄num_images1►
◄lora_scale1.00►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Two pictures in, one out: a person and a garment, and you get the person wearing the garment. That's the whole node. fal's flux-2-lora-gallery/virtual-tryon endpoint runs at $0.021 per processed megapixel, and the pack exposes it with the LoRA strength as a knob - which is the single dial that decides whether the clothes fit the body properly or float slightly above it.

How it works

Flux 2 is unusually good at multi-reference conditioning - the KB treats that as its signature strength, and it's the reason the flock-on-4B try-on demos that circulated worked at all. fal trained a LoRA on top for the try-on job specifically, and the node uploads both pictures to fal's CDN before submitting the request. Results go to output/fal/fal-ai_flux-2-lora-gallery_virtual-tryon/.

Inputs

image_1 is required and the tooltip is blunt about the order of business: person image and clothing image. Sockets run up to image_6, and batches are sent in socket order (first picture of socket 1 is number 1) - which matters here because the second image you send is the garment.

prompt describes the result. Empty is allowed and works, but a short instruction about pose and framing ("full-body shot, standing, neutral studio light") helps the model decide what to render rather than cropping to the torso.

lora_scale (0–2, default 1) is effect strength. Under 1 leaves the original clothing partly visible; over 1 makes the garment dominate, sometimes at the cost of body shape. If the garment is landing badly, this is the first thing to move.

guidance_scale (0–20, default 2.5) and num_inference_steps (4–50, default 40) are the Flux 2 settings - 40 steps is not cheap, so halving it is a reasonable exploration mode. acceleration is none or regular. image_size defaults to square_hd; full-body try-on usually wants portrait_4_3, or custom with the width and height set. num_images (1–4) generates variations in one paid call, which is how you'd judge a garment, and seed at -1 randomises. output_format defaults to png; the safety checker returns flagged output as black images.

The shared options: max_cost_usd (default $20, 0 disables) stops a run before anything is uploaded when the estimate is too high; reuse_identical_run returns an identical already-paid result instead of charging again; extra_json merges raw JSON into the request for fal fields with no box; max_concurrent (default 1) limits how many paid fal calls run at the same time across the graph.

Outputs

images is the result - a normal IMAGE batch for saving, compositing on a background, or dropping onto a contact sheet. image_paths, seed, prompt and info come with it; info is the JSON holding the request id, the estimate and fal's full answer.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis

Restart, then in the .env next to run_nvidia_gpu.bat:

FAL_KEY=your-key-from-fal.ai/dashboard/keys

The fal provider pulls in no Python packages, so there's nothing to install for these nodes.

Where people get burned

Garment fidelity is the honest weak point: patterns, fine text and logos get reinterpreted, because the LoRA is re-rendering the clothing from an image rather than texturising a 3D body. Flat-lay product photos with clear edges do better than a garment photographed on a hanger in bad light. Second, the person's proportions and skin tone can shift a little - acceptable for a lookbook, worth checking if it's a real customer's photo and they'll notice.

Third, cost: it bills processed megapixels including both inputs, so a 2MP person plus a 1MP garment plus a 1MP output is around $0.084, and a four-image variation pass roughly quadruples it. And the deal you're making is the same as everywhere in this pack: both photographs are uploaded to fal before anything renders, so don't put a client's face or an unreleased design through it without deciding that's fine first.

Categoryarkennemasis/fal/Image/Flux

Inputs (22)

NameTypeDefaultDescription
image_1IMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
promptSTRINGThe prompt to generate a virtual try-on image.
image_sizeCOMBOsquare_hdThe 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_widthINT102416–14142Width in pixels when image_size is 'custom'.
image_size_heightINT102416–14142Height in pixels when image_size is 'custom'.
guidance_scaleFLOAT2.500–20The CFG (Classifier Free Guidance) scale. Controls how closely the model follows the prompt.
num_inference_stepsINT404–50The number of inference steps to perform.
accelerationCOMBOregularAcceleration level for image generation. 'regular' balances speed and quality.
seedINT-1-1–2147483647Random seed for reproducibility. Same seed with same prompt will produce same result. -1 leaves it to the model.
enable_safety_checkerBOOLEANtrueWhether to enable the safety checker for the generated image. Disabling it requires account authorization; unauthorized requests are always checked.
output_formatCOMBOpngThe format of the output image
num_imagesINT11–4Number of images to generate
lora_scaleFLOAT1.000–2The strength of the virtual try-on effect.
image_2optIMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_3optIMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_4optIMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_5optIMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_6optIMAGEThe URLs of the images for virtual try-on. Provide person image and clothing image. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
max_cost_usdoptFLOAT20.00–100000Safety 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_runoptBOOLEANtrueIf 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_jsonoptSTRINGAdvanced: 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_concurrentoptINT11–32How 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)

NameTypeDescription
imagesIMAGE—
image_pathsSTRING—
seedINT—
promptSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.