Outfit Preset Selector
Outfit swap presets that keep the face intact
- prompt
Qwen-Image-Edit will happily change your subject's clothes and, while it's at it, rebuild their face, restyle their hair, and re-light the whole photo. It re-emits the entire frame - nothing stays put unless your prompt pins it down. That's the whole reason this node exists: pick an outfit from a dropdown and it hands you a Qwen-Image-Edit prompt that swaps the clothes without taking the person along with them.
Let's be clear about what it is and isn't. It's a prompt builder, not the model. The 20B Qwen-Image-Edit weights, the GGUF quant, the text encoder - all of that lives in your Qwen ComfyUI setup (the ComfyUI-QwenImage family and friends). This node produces the STRING you feed into TextEncodeQwenImageEditPlus, and it makes that string worth feeding.
Why does the string need building at all? Hand-writing a Qwen-Image-Edit prompt is deceptively fiddly. The encoder wants the instruction in a particular shape - this pack opens every prompt with editorial_edit: and the phrase "Picture 1 is the base image" - and if you forget the identity guards, "make her business casual" quietly becomes "make her a different person in business clothes." Every preset here emits the same CRITICAL IDENTITY PRESERVATION block: face exactly as-is, hair exactly as-is, head and neck exactly as-is, skin color and tone matched. The mechanism is a dictionary lookup: you pick a preset, it returns a hand-tuned prompt string with the guards baked in. No API, no key, no tokens - nothing to go wrong.
The input you actually set: preset, a dropdown of eight named looks - Business Casual, Formal Evening, Casual T-Shirt + Jeans, Swimwear / Beach, Athletic / Workout, Streetwear, Vintage 1950s, and the quietly brilliant Remove Jacket/Outerwear Only. Most are what they sound like: describe the outfit, tell the model to keep everything else. The last one is the differentiator - a removal preset rather than a swap, explicitly told to "keep whatever clothing is underneath visible and unchanged." That's exactly the phrasing a model that re-emits the frame needs, or it'll invent a new shirt while taking off the jacket. New here? Start with Casual T-Shirt + Jeans (the default). It's the safest look and the fastest way to see what the node is doing.
The output: one prompt STRING. Wire it into TextEncodeQwenImageEditPlus's prompt input, then on to the sampler like any Qwen workflow.
Installing
Same as any custom node. ComfyUI Manager users can search "QwenClothingSelector" and install, then restart. Otherwise:
cd ComfyUI/custom_nodes
git clone https://github.com/xxchinenxx/ComfyUI-QwenClothingSelector.git
Restart ComfyUI. That's genuinely it - no Python dependencies, no model downloads in this pack. The only heavy lifting is Qwen-Image-Edit itself, which you bring separately.
The honest caveat
The identity block is a prompt, not a guarantee. It works, but it works a lot better when you also mask the body upstream - the README suggests a body mask minus a face segment (e.g. RMBG body minus face detection) so the model isn't free to wander. And since Qwen-Image-Edit re-emits the whole frame, drift can still creep in across a chain of edits. If a face comes back slightly off, that's the model, not this node; the fix is a face-inpaint pass or a tighter mask.
A note on what's NOT free: the README mentions a paid Pro Pack (adult-content presets) sold separately via Patreon. You don't need it, and the free nodes stand on their own. If you hit encoder errors like split_with_sizes expects split_sizes have only non-negative entries, that's your Qwen install, not this pack - check the encoder's wiring before blaming the dropdown.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | Casual T-Shirt + Jeans | 8 options: Business Casual, Formal Evening, Casual T-Shirt + Jeans, Swimwear / Beach, Athletic / Workout, Streetwear, +2 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |