Qwen Image Edit 2511 ONE STUDIO (TJ)
Sentence editing, camera angles and faceswap in one panel
- pipe
- image
Qwen Image Edit changed what "editing an image" means: you hand it a picture and a sentence - "make it night, add a jacket" - and it just does it, no mask, no adapter, no ControlNet. Qwen Image Edit 2511 ONE STUDIO (TJ) wraps the 2511 line of that model in the one-node UI of this pack, and adds the bells: text-to-image, img2img, multi-reference editing, inpaint/outpaint, faceswap, a camera-angle drag control, and SeedVR2 upscale.
The "edit with a sentence" model is genuinely a category shift - it's what took the work masks and adapters used to do. It's also structurally loose: it re-emits the whole frame, so pixels you didn't ask about move, and faces drift if you chain edits. That's a model trait, not a bug in this node, and worth knowing before you blame the UI.
How it works
Same engine as every node in this pack: the Python class is a thin shell that returns the last generated image as an IMAGE, and the JavaScript builds and queues the actual ComfyUI graph for the mode you picked - the Edit mode is built on the FluxKontext multi-reference workflow from KJNodes. So the pack-wide rule applies: generate with the node's ▶ Generate button, not ComfyUI's RUN. RUN just re-emits the most recent image through the output slot; click it before generating and you'll get a blank grey 64×64 IMAGE and a moment of panic.
The inputs and outputs that matter
One optional input: prompt_override, a multiline STRING prepended before whatever prompt you type in the panel - your hook for pushing prompts in from a Primitive (String) or TJ_NODE's Prompt Studio. One output: image (IMAGE). Output node, so you can chain it into a preview or save. Everything else is panel + Settings.
The modes to actually use: EDIT takes the original plus up to three reference images and a text prompt; PAINT does masked inpaint (denoise 0.7–0.9 is the README's recommendation) with outpainting included; FACESWAP needs the BFS LoRA and pre-fills a default prompt for you; ANGLE is the party trick - drag H (azimuth), V (elevation) and Z (zoom) and the model re-shoots the scene from that camera position, powered by a Multi-Angle LoRA you set in Settings.
Installing it
ComfyUI Manager (search ComfyUI-TJ_NODE_STUDIO_ONE) or:
cd ComfyUI/custom_nodes
git clone https://github.com/designloves2/ComfyUI-TJ_NODE_STUDIO_ONE.git
Restart, then install dependencies with the bundled install_requirements.sh / install_requirements.bat. This node specifically needs ComfyUI-KJNodes (the FluxKontext nodes it builds Edit mode from) and ComfyUI_FaceAnalysis plus insightface for faceswap.
Models, from the README's Comfy-Org links: the edit diffusion model (Qwen2.5-VL-7B-Image-Edit-bf16.safetensors) to models/diffusion_models/, the Qwen2.5-VL vision encoder to models/text_encoders/, the ae.safetensors VAE to models/vae/, and the LoRAs - BFS for faceswap (required for that mode), the Multi-Angle LoRA (required for ANGLE), and the optional Lightning LoRA if you want 4-step fast generation. Low VRAM? There's a GGUF line via unsloth, which needs ComfyUI-GGUF installed.
Where people get stuck
The classic failure here is the missing FluxKontext node error - that's KJNodes not being installed or being stale, so update it rather than hunting a phantom. If faceswap finds no face, check insightface actually installed (the README lists this exact symptom). If ANGLE does nothing, you forgot the Multi-Angle LoRA in Settings - ANGLE won't work without it.
And the one mental adjustment that'll save you grief: because this model edits by re-emitting the whole frame, "everything else moved" is normal on a big edit, especially if you didn't mask. The 2511 line is the newest open weight of Qwen-Image-Edit, which has meant the same thing all along - for a beginner it's the friendliest "describe the change and get it" experience in ComfyUI, just keep expectations calibrated about the parts of the photo you told it to leave alone.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_overrideopt | STRING | External prompt override appended before the internal prompt. | |
| pipeopt | TJ_PROMPT_PIPE | PromptDB pipe (TJ_NODE). At generation, fields present in the pipe override this node's settings; missing fields keep the node's own values. The node's UI is never changed. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |