Easy_QwenEdit2509
One node for Qwen-Image-Edit-2509's multi-image conditioning
- clip
- vae
- image1
- image2
- image3
- latent_image
- latent_mask
- positive
- zero_negative
- latent
Qwen-Image-Edit-2509 was the revision that made this model family a real workflow component rather than a novelty - it added native multi-image editing (up to three reference images at once, for person+person, person+product, or person+scene composition), better facial and product identity preservation, and native depth/edge/keypoint conditioning. Easy_QwenEdit2509 wraps the official conditioning setup for that specific revision into one node, which is exactly the kind of thing Apt_Preset does across the board: take a multi-node official pipeline and collapse it into fewer, friendlier inputs.
The three image slots map directly to what 2509 actually supports. image1, image2, and image3 are all optional - feed one for a single-image edit, or up to three for the multi-image compositions 2509 was built for (person+product try-on shots, person+person merges, and so on). Leave the ones you're not using disconnected; they're not required.
auto_resize (crop / pad / stretch) handles the case where your reference images don't already match your target canvas - crop takes a center crop, pad adds black borders, stretch forces the aspect ratio to match, and which one you want depends on whether preserving every pixel of the reference or preserving the exact target dimensions matters more for your shot.
vl_size (default 384) is specifically the resolution the vision-language encoder works at internally - per the node's own description, this is the setting that "affects detail." Push it higher and the model reads finer detail out of your reference images at the cost of more compute; the default of 384 is a reasonable middle ground for most edits. This is the same instinct behind Apt_Preset's own Image_Resize_longsize node, just scoped specifically to how this node feeds its vision-language encoder.
prompt is your plain-language edit instruction - "change her dress to blue," "remove the watermark," that kind of thing, which is the whole point of an instruction-editing model: no mask required for a change like that. system_prompt ships with a sensible default already filled in (it instructs the model to first describe the input image's color, shape, size, texture, objects and background, then apply your instruction while keeping the rest consistent), and you can override it if you want to push the model toward a different editing behavior.
latent_image/latent_mask are optional and control your output canvas rather than an input reference - per their description, they set the generated image's size and, if you provide a mask, constrain which part of that canvas gets edited.
Outputs. positive and zero_negative (both CONDITIONING - Qwen-Image-Edit workflows commonly use a deliberately empty/near-zero negative conditioning rather than a written negative prompt, which is why it's named zero_negative rather than just negative), plus latent, pre-sized and ready for your sampler.
One real limitation worth knowing before you build around this: identity drift on faces is a documented weakness of this model line - users report the model doing fine on faces it's seen plenty of but mangling less-common faces across edits, to the point that a follow-up inpainting pass on the face is common practice. If a chain of edits through this node starts drifting on a specific person's face, that's the model, not a misconfiguration, and a targeted inpaint afterward is the standard fix rather than anything you can tune away in this node's settings.
Installing it. This node ships inside ComfyUI-Apt_Preset - search "ComfyUI-Apt_Preset" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git
install.bat on Windows for dependencies, then restart. You'll also need an actual Qwen-Image-Edit-2509 checkpoint, plus its CLIP/text encoder and VAE, loaded separately and wired into this node's clip/vae inputs - this node handles the conditioning setup, not model loading. The 20B model is out of reach at full precision on most consumer cards, so in practice most people run a GGUF or fp8 quantized version, which community conversions made available within hours of each Qwen-Image-Edit release.
Troubleshooting. If output quality is soft or ignores reference detail, try raising vl_size before touching anything else. If a multi-image edit looks like it only respected one of your inputs, double-check all three image slots are actually wired the way you think - leaving one disconnected is valid, but a mis-wired one won't error, it'll just be silently ignored. And if the pack itself won't import, that's the documented pack-wide IMPORT FAILED issue tied to a missing dependency elsewhere, not this node - check your ComfyUI console log at startup.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| auto_resizeopt | COMBO | crop | 3 options: crop, pad, stretch |
| vl_sizeopt | INT | 38464–2048 | — |
| promptopt | STRING | — | |
| latent_imageopt | IMAGE | — | |
| latent_maskopt | MASK | — | |
| system_promptopt | STRING | Describe the key features of the input image (color, shape, size, texture, objects, background), then explain how the user's text instruction should alter or modify the image. Generate a new image that meets the user's requirements while maintaining consistency with the original input where appropriate. | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| zero_negative | CONDITIONING | — |
| latent | LATENT | — |