Image Expander · Edit
9 — you don't get to say what it paints
- image_url
- images
- task id
Your best portrait is a 1:1 square and you need it for a thumbnail that's 16:9. Or you generated something at 832x1216 and the client wants a banner. Classic outpaint job - and locally it's the thing people fight with: a Fill model or Qwen-Edit plus a mask plus a ControlNet so the new margin doesn't drift off into a different photograph.
Image Expander · Edit is the one-call version. 3.6 credits an image, two fields you can change, no prompt. That last part is the trade.
What it is
A wrapper around popnow/image-expander-v1/edit in the PopNow pack - a cloud node, so no weights, no VRAM, and about three and a half cents a picture. The node uploads your image, the service drops it into a bigger frame and paints the new margin, and you get a plain IMAGE tensor back that behaves like any other.
What it does not have is a text box. There's no prompt in this node's schema at all. So you are not telling it "extend the beach to the left, keep the sea calm" - the model reads the scene and continues it. On a photo with boring margins (sky, wall, table, grass, floor) that's a fantastic deal, because there's nothing to specify. On a shot where the extension needs to be specific - a logo continuing off-frame, signage, a second person - you're rolling the dice and paying for every roll.
If you need directed outpainting, this isn't your node. That's a local mask-and-prompt pipeline, and the inpainting essay covers the model choices and why the tile condition matters.
The inputs
image_url is the source, and it's the only required field.
aspect_ratio defaults to 1:1 - note that, because on an edit node the usual default is "keep the source shape" and here it isn't. If you leave it alone, a 16:9 photo comes back square, with the frame re-cut around your subject. Set it deliberately: 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 1:1 are the choices.
output_format defaults to PNG, which is the right default for this job - no reason to add JPEG artefacts to a frame you're going to crop again.
Two things there aren't: no seed, so you can't pin a result and iterate on it, and no size control beyond the ratio. The tooltip states the rule plainly: the long edge is always 1536 pixels. Which means this node is not just an outpainter, it's also a resolution normaliser. Feed it a 600px image and it's effectively upscaling while it outpaints; feed it a 3000px image and it's downscaling first.
Outputs are images and task id.
Install
Manager → search PopNow → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Then a key from popnow.ai/api/console/keys in Settings > PopNow, or in the environment:
POPNOW_API_KEY=sk-popnow-... python main.py
There's nothing to download and nothing to pip install - the pack declares zero dependencies because it only uses libraries ComfyUI already has. Restart once more after adding the key: the node list is rebuilt from your account's catalog at startup, so that's also how new models appear without updating the pack.
Where people get burned
Don't expect the input pixels back verbatim. "Set inside a larger frame and new scenery is painted around it" is the tooltip's own description, and re-encoding plus a full generative pass means the original area is re-rendered too. If the source region has to be pixel-exact, composite the original back over the expanded result with a mask instead of trusting the round trip.
You will be re-cutting the frame too. Expanding from 1:1 to 16:9 at a fixed 1536-pixel long edge doesn't just add margin - the composition gets rebalanced to look right at the new shape, and a subject sitting at the edge of your square may come back repositioned. Compare before and after at full size, not as thumbnails.
Batches collapse to one image. The image_url socket takes a single image; connect a batch and the pack uploads the first and logs that it ignored the rest. Queue per image.
Cost is flat but the retries aren't. No seed means no cheap re-roll of a result you liked; each attempt is another 3.6 credits. Set Max credits per run in Settings > PopNow while you're learning what it does with your kind of photo, and remember a cancelled run keeps going on PopNow and is charged if it finishes.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Photo to expand. It is set inside a larger frame and new scenery is painted around it. | |
| aspect_ratio | COMBO | 1:1 | Shape of the finished image. The long edge is always 1536 pixels. |
| output_format | COMBO | PNG | File format of the returned image. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The PopNow task id, for the API console logs or support. |