P-Image Edit (BudgetPixel)
Fast multi-image editing, and the prompt trick that makes it work
- reference_images
- images
P-Image Edit is the editing sibling of Pruna's P-Image, and the one thing that separates it from a hundred other "image edit" nodes is how the prompt works. You refer to your input images as "image 1", "image 2" and "image 3" directly in the text - "put the subject from image 1 into the scene from image 2" - and the model treats that literal naming as its instruction set. It's a small convention and it changes everything: multi-image composition stops being a black box and becomes a sentence you can actually write.
It's a hosted API node, like the rest of the BudgetPixel pack: up to three reference images and a prompt go to the API, the fast Qwen-based edit pipeline runs server-side, and a single image comes back as a core IMAGE tensor. 15 credits per edit. No local GPU, no weights, nothing to configure beyond the inputs.
The inputs
reference_images(required) - 1–3 images to edit or compose. These areIMAGEconnections, so they can come from anywhere in your graph.prompt(required) - the instruction, and this is where the "image 1 / image 2" naming lives. Style transfer, object manipulation, composition swaps - all of it gets routed through that convention.aspect_ratio- defaults tomatch_input_image, i.e. the first reference's frame. Set a specific ratio if you want to force one.seed- default -1 for random; set it for reproducible edits.num_images- fixed at max 1; the model returns one image per request.
Output is images into Preview Image or Save Image.
What it's actually good at
The strength is multi-image composition: merging a character from one photo into a background from another, combining the style of one image with the content of another, rearranging objects across two shots. That's the "image 1 / image 2" job, and P-Image Edit does it fast and cheaply at 15 credits. It's also the pack's cheap edit option - the closest comparison is Qwen Image 2.0/3.0 (45 and 40 credits), which are heavier and slower but more precise on fine edits, and Muse (12 credits), which is agentic but geared toward generation and research, not surgical edits.
The honest caveat: naming convention or not, this is still a one-shot edit model, not Photoshop. Complex edits with many constraints can come back wrong, and there's no iterative refine button - you re-run with a better prompt. But for the price and speed, re-running is the workflow.
Install and issues
Install via ComfyUI Manager (search "BudgetPixel") or:
cd ComfyUI/custom_nodes
git clone https://github.com/budgetpixel-ai/comfyui-budgetpixel.git
pip install -r comfyui-budgetpixel/requirements.txt
Restart, find it under Add Node → BudgetPixel → Image, and set your API key via BUDGETPIXEL_API_KEY or a budgetpixel.json file - no key widget, so shared workflows stay clean.
Pack-wide caveats: a recent ComfyUI for core types, and Stop abandons the local wait without cancelling the server-side job (which still bills its 15 credits). The most common user error is skipping the image-naming convention in the prompt - if your instruction says "the first image" instead of "image 1", the model has to guess, and the output quality reflects it.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text instruction describing the desired edit or composition. | |
| reference_images | IMAGE | Reference images to edit or compose (1-3). Each item is a public image URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. | |
| aspect_ratioopt | COMBO | match_input_image | Output aspect ratio. Defaults to matching the first reference image. |
| num_imagesopt | INT | 11–1 | Number of images to generate. This model returns a single image per request. |
| seedopt | INT | -1-1–2147483647 | Seed for reproducible generation. Omit for random. |
| force_rerunopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |