Nodes/Comfyui-zhenzhen/zhenzhen-flux-pro-vto-fal
ComfyUI Node

zhenzhen-flux-pro-vto-fal

Put the garment on the person, server-side

By T8mars·Created about a year ago·Updated 2 days ago· 740
zhenzhen-flux-pro-vto-fal
  • human_image
  • garment_image
  • images
  • response
  • image_urls
prompt
human_image_url
garment_image_url
api_key
num_inference_steps4
output_formatjpeg
seed0
image_waybase64
poll_interval6
max_poll_attempts600
skip_errorfalse

Virtual try-on is one of those tasks where the local ecosystem still lags: keeping the person's identity while convincingly draping a new garment over them is hard, and the models that do it well are big and fiddly. Comfly_flux_pro_vto_fal skips the whole problem by calling BFL's Flux Pro Virtual Try-On model (fal-ai/flux-pro/v1/vto) through the Zhenzhen relay's fal route. You feed it a photo of a person, a photo of a garment, and a prompt, and it returns the person wearing the garment - as an IMAGE tensor in your graph.

E-commerce people, this is your node. Product shots, "what would this look like on a model" checks, one-person-many-outfits catalogs. The fal route is prepaid-credit style: the relay holds a base and the final bill lands after the job, so don't be alarmed if the cost line moves.

The two inputs that matter

  • human_image (or human_image_url) - the person. A clean, well-lit, front-facing photo works best; the model is much happier with a good subject than a grainy selfie.
  • garment_image (or garment_image_url) - the clothing on a flat lay or hanger. Same advice: clean and isolated beats busy background.

You need both - the node validates this and errors out if either is missing. prompt is optional but useful for nudging ("keep the original lighting," "product on a model, front view"). num_inference_steps defaults to a snappy 4 (max 50) - more steps cost more and buy marginal quality; start low. output_format is jpeg or png. image_way (base64 or image_url) chooses how your images travel to the endpoint - base64 is the default and fine for most sizes. seed is capped at FAL's 65535 (0 = random). poll_interval and max_poll_attempts control the wait loop - the default 600 × 6s is a one-hour timeout, generous for a VTO job.

Outputs: images (IMAGE tensor), response (full JSON), and image_urls (the hosted results, newline-separated).

Setup

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

Restart (or ComfyUI Manager → "Comfyui-zhenzhen"). The fal nodes in this pack use the same Zhenzhen key - from ai.t8star.org - pasted into api_key; the relay handles the fal endpoint, so you don't need a separate fal.ai account.

Reality check

VTO quality is still "good enough for a catalog draft," not indistinguishable from a real photoshoot - keep expectations there. The fal route is metered and pre-deducted, so an expensive multi-step job shows up as a bigger deduction; the README spells out that fal charges pre-deduct and settles true afterward. Standard relay gotchas apply: 500s are often upstream and a re-run clears them, and both your subject photo and the garment leave your machine. If you're generating a full product catalog on the clock, budget for the per-image cost before you queue fifty jobs.

Categoryzhenzhen/FAL

Inputs (13)

NameTypeDefaultDescription
promptSTRING
human_imageoptIMAGE
garment_imageoptIMAGE
human_image_urloptSTRING
garment_image_urloptSTRING
api_keyoptSTRING
num_inference_stepsoptINT41–50
output_formatoptCOMBOjpeg2 options: jpeg, png
seedoptINT00–655350 = random seed. FAL seed max is 65535.
image_wayoptCOMBObase642 options: base64, image_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse

Outputs (3)

NameTypeDescription
imagesIMAGE
responseSTRING
image_urlsSTRING