Nodes/Rebels Krea2 Outpaint/Rebels Krea2 Outpaint Canvas
ComfyUI Node

Rebels Krea2 Outpaint Canvas

The node that decides where your source image lives on the bigger canvas

By RealRebelAI·Created 2 months ago·Updated 2 months ago· 26
Rebels Krea2 Outpaint Canvas
  • source
  • condition
  • placed_source
  • placement
  • canvas_width
  • canvas_height
directionextend_right
target_width1536
target_height1024
source_max_edge384
seam_px32

The krea2-outpaint LoRA isn't a normal "extend this image" edit. It's a registered LoRA: the source image is placed at an explicit bounding box on a bigger canvas, and the model is told exactly which coordinates those known pixels occupy. This node is the geometry half of that deal. You feed it your source image and a direction, it hands you the canvas size, the placed image, and a JSON string that the other three nodes in this pack all read. Think of it as the pack's brain, and the rest as arms.

Why reach for it instead of padding the image yourself? Because Krea 2 Turbo has no dedicated outpainting checkpoint, and slapping your source onto a bigger latent with an empty-mask hack works poorly - the model treats the whole thing as noise it should redraw. This pack ports the diffusers pipeline the LoRA was trained with, so the reference lands in the target latent grid at the exact spot the LoRA expects. The known region is carried only by that registered reference. No latent masking, no API, no key.

What it actually does

The node builds a bounding box that preserves your source's aspect ratio and spans the full complementary canvas dimension - full height for a horizontal extend, full width for a vertical one. Then it emits five outputs:

  • condition - a coarse downscaled copy of the placed source (max edge capped by source_max_edge) for the encode node to VAE-encode as the reference latent.
  • placed_source - the full-resolution placed image, for the composite node at the end.
  • placement - a JSON string (bbox, canvas size, seam width, pass count) that the Model Patch and Composite nodes both consume.
  • canvas_width / canvas_height - the target canvas, snapped to a multiple of 16. Wire these straight into an EmptyLatentImage.

The inputs you actually set: source, direction (one of extend_right, extend_left, extend_down, extend_up, extend_width_both, extend_height_both), and target_width / target_height. Leave source_max_edge at its 384 default and seam_px at 32 unless you have a reason - seam_px only matters downstream at composite time.

Installing it

This is a ComfyUI Manager install - search "Rebels Krea2 Outpaint" - or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/RealRebelAI/ComfyUI-Rebels-Krea2-Outpaint
# restart ComfyUI

No extra Python dependencies, which is refreshing. The real work is the model files: you need Krea 2 Turbo (or a Krea 2 GGUF fork), the Krea 2 VAE, the Qwen3-VL CLIP, and the LoRA itself, krea2_outpaint_rank32.safetensors from huggingface.co/yijunwang2/krea2-outpaint, dropped into models/loras.

Where people get burned

  • "No room for a horizontal extend" - that error means the source at full canvas height would already fill the whole width, so there's nothing left to paint. Crank up target_width (or pick a vertical extend). The node raises with a clear message, so it's not silent.
  • Single pass only, for now. The source box spans the full width or full height, which covers extend-in-one-direction and centered-both-sides. Fully interior boxes (canvas on all four sides) need the two-pass plan the pack ships but doesn't chain for you - the placement JSON reports pass_count, and "interior placement has been a pain with everything else I've used" is a sentiment you'll find echoed in the release thread for the LoRA. You'll be doing that chaining manually.

The rest of the wiring is in the pack's README and worth copying exactly: Model Patch goes after Load LoRA, and you sample with 8 steps, euler, CFG 1.0, denoise 1.0 - Turbo convention, with the empty latent being pure noise.

CategoryRealRebelAI/krea2_outpaint

Inputs (6)

NameTypeDefaultDescription
sourceIMAGE
directionCOMBOextend_right6 options: extend_right, extend_left, extend_down, extend_up, extend_width_both, extend_height_both
target_widthINT153616–8192
target_heightINT102416–8192
source_max_edgeINT384128–768
seam_pxINT320–256

Outputs (5)

NameTypeDescription
conditionIMAGE
placed_sourceIMAGE
placementSTRING
canvas_widthINT
canvas_heightINT