Qwen Image 1.0 LoRA · Edit
Your own style LoRA, no mask, four and a half cents
- image_url
- loras
- images
- task id
Before Qwen-Image-Edit, changing a photo meant a mask, a ControlNet and, if a face was involved, an IP-Adapter. The Edit line collapsed all of that into "hand it a picture and a sentence". This node is the original Qwen-Image generation model wearing that editing ability, with a loras socket so you can attach your own style - the thing that made the open Qwen ecosystem what it is and the thing Kontext's licence wouldn't let you do.
Cost: 4.5 credits ($0.045) per image. That's the simplest sentence in this entire pack, and it's why people batch through this node rather than agonising over each render.
What it's doing
The pack builds one ComfyUI node per PopNow model-and-task from the model's published input schema, so the widgets are the API's real parameters. Your source image is uploaded to PopNow's storage as a private reference, the job is quoted and submitted, and the returned picture lands back in the graph as a normal IMAGE batch.
The one piece of real machinery is loras. It's a custom socket type that only accepts a PopNow LoRA node, and each of those carries a file plus a strength. LoRA models in this pack accept up to three, chained - so a style LoRA at 0.8 plus a character LoRA at 0.6 in the same run is a supported configuration, not a hack. The LoRA file itself can be a .safetensors sitting in ComfyUI/models/loras (uploaded once, reused for 12 hours), a Hugging Face repo id or page, a Civitai page, or any direct https:// link. Gated downloads read HF_TOKEN or CIVITAI_API_KEY from the environment - never from a widget, because widgets get saved into every workflow you share.
The fields you'll actually set
prompt - the tooltip is the best edit advice in the pack: "Say what to change and what to keep." Vague instructions get you a whole new picture. "Make the jacket olive green, keep the pose, framing and lighting identical" is the register this model wants. Because the text encoder is an LLM, plain sentences work and (word:1.3) weighting syntax does nothing. And if your LoRA has a trigger phrase, it goes first.
image_url - one source image, a single socket. Feed it a batch and it uses the first picture.
loras - optional, up to three, each with its own scale. This is the whole point of the node.
aspect_ratio - defaults to model default, which means the request omits the field and the output follows your source image. Leave it alone unless you genuinely want a different shape; overriding it on an edit is how you get a recomposed picture instead of an edited one.
output_format - JPEG by default. Pick PNG if you're going to keep editing the result, because JPEG artefacts compound across a chain of edits.
seed - fixed by default so a repeat queue returns the cached result rather than buying a second image.
Outputs: images (wire to Save Image, or into another node's image socket) and task id.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Restart. Or Manager → Custom Nodes Manager → PopNow → Install. Nothing else installs - the pack declares no dependencies beyond what ComfyUI ships - but you do need Python 3.10+ and a ComfyUI with the V3 node API. Add a key from popnow.ai/api/console/keys in Settings → PopNow (or POPNOW_API_KEY), then restart a second time so the catalog is fetched from your account.
The honest limits
Qwen-Image-Edit re-emits the whole frame, so pixels you never mentioned will move. On a single edit that's invisible; on a chain of five, faces drift and backgrounds wander. If a sequence has to stay locked, do the edit once and composite rather than feeding it back in.
There's no mask input on this node - it's instruction editing, so "keep everything else" is something you say in the prompt rather than something you paint. The 2.1 models in this pack do take an optional mask image if you need a hard boundary.
Error codes worth knowing: 40201 is an empty balance, 400 names a field the model rejected, 40004 means that combination of settings isn't servable, and refused or failed generations come back refunded. The task id output is there so you can pull the job up in the PopNow API console.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Say what to change and what to keep. If a LoRA has a trigger phrase, put it first. | |
| image_url | IMAGE | Source image to edit. | |
| aspect_ratio | COMBO | model default | Output aspect ratio. Leave it empty to follow the source image. |
| output_format | COMBO | jpeg | Container of the returned image. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| lorasopt | POPNOW_LORAS | Up to three LoRA weight files trained for Qwen-Image-Edit, each with its own strength. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |