Generated reference · ComfyUI workflow · Composition & editing

Outpaint Expand

Canvas extension on SDXL: core ImagePadForOutpaint grows the frame in the chosen direction with a feathered transition mask, and differential diffusion paints coherent new content into the extension at full denoise while the original …

Composition & editing11nodesGPU A5000out image~50sv1.0.0

On this page

Canvas extension on SDXL: core ImagePadForOutpaint grows the frame in the chosen direction with a feathered transition mask, and differential diffusion paints coherent new content into the extension at full denoise while the original pixels stay latent-locked

11Graph nodes
10Node classes
9Inputs
2Models

Tags: compositionoutpaintexpandcanvasextensiondifferential diffusion

Inputs (9)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

source_imageimagerequired
Image whose canvas is extended
promptstringrequired
What the extended surroundings contain
directionenumdefault all
Which side(s) of the canvas to extend
options: leftrightupdownhorizontalverticalall
expand_pixelsintegerdefault 256min 64max 512
Extension size per chosen side, in pixels (multiples of 8)
featheringintegerdefault 40min 0max 128
Feather width blending the original edge into the new region
seedintegerdefault -1
Random seed (-1 for random)
stepsintegerdefault 30min 15max 60
Sampling steps
cfg_scalefloatdefault 7.0min 1.0max 15.0
Prompt adherence strength
checkpointenumdefault sdxl_base
SDXL checkpoint (standard, not an inpaint build)
options: realvis_xl_v5sdxl_base

ComfyUI node graph (11)#

The executable ComfyUI prompt graph: 11 nodes across 10 distinct node classes, wired by 15 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: CheckpointLoaderSimple"] n1["2: LoadImage"] n2["3: ImagePadForOutpaint"] n3["4: CLIPTextEncode"] n4["5: CLIPTextEncode"] n5["6: VAEEncode"] n6["7: SetLatentNoiseMask"] n7["8: DifferentialDiffusion"] n8["9: KSampler"] n9["10: VAEDecode"] n10["11: SaveImage"] n1 -->|image| n2 n0 -->|clip| n3 n0 -->|clip| n4 n2 -->|pixels| n5 n0 -->|vae| n5 n5 -->|samples| n6 n2 -->|mask| n6 n0 -->|model| n7 n7 -->|model| n8 n3 -->|positive| n8 n4 -->|negative| n8 n6 -->|latent_image| n8 n8 -->|samples| n9 n0 -->|vae| n9 n9 -->|images| n10
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (11)#

1CheckpointLoaderSimplecore
ckpt_name = {{checkpoint_files[checkpoint]}} tmpl
outputs: MODELCLIPVAE
2LoadImagecore
image = {{source_image}} tmpl
outputs: IMAGEMASK
3ImagePadForOutpaintcore
image = ◂ node 2 · out[0]left = {{pad_configs[direction].left * expand_pixels}} tmpltop = {{pad_configs[direction].top * expand_pixels}} tmplright = {{pad_configs[direction].right * expand_pixels}} tmplbottom = {{pad_configs[direction].bottom * expand_pixels}} tmplfeathering = {{feathering}} tmpl
outputs: IMAGEMASK
4CLIPTextEncodecore
text = {{prompt}} tmplclip = ◂ node 1 · out[1]
outputs: CONDITIONING
5CLIPTextEncodecore
text = ugly, deformed, blurry, low quality, watermark, text, signature, visible seam, frame, border, repeated edgeclip = ◂ node 1 · out[1]
outputs: CONDITIONING
6VAEEncodecore
pixels = ◂ node 3 · out[0]vae = ◂ node 1 · out[2]
outputs: LATENT
7SetLatentNoiseMaskcore
samples = ◂ node 6 · out[0]mask = ◂ node 3 · out[1]
outputs: LATENT
8DifferentialDiffusioncore
model = ◂ node 1 · out[0]
outputs: MODEL
9KSamplercore
model = ◂ node 8 · out[0]positive = ◂ node 4 · out[0]negative = ◂ node 5 · out[0]latent_image = ◂ node 7 · out[0]seed = {{seed}} tmplsteps = {{steps}} tmplcfg = {{cfg_scale}} tmplsampler_name = dpmpp_2m_sdescheduler = karrasdenoise = 1.0
outputs: LATENT
10VAEDecodecore
samples = ◂ node 9 · out[0]vae = ◂ node 1 · out[2]
outputs: IMAGE
11SaveImagecore
images = ◂ node 10 · out[0]filename_prefix = outpaint_expand

Parameter banks (1)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

pad_configs (7)#

left
{"left": 1, "right": 0, "top": 0, "bottom": 0}
right
{"left": 0, "right": 1, "top": 0, "bottom": 0}
up
{"left": 0, "right": 0, "top": 1, "bottom": 0}
down
{"left": 0, "right": 0, "top": 0, "bottom": 1}
horizontal
{"left": 1, "right": 1, "top": 0, "bottom": 0}
vertical
{"left": 0, "right": 0, "top": 1, "bottom": 1}
all
{"left": 1, "right": 1, "top": 1, "bottom": 1}

Models & dependencies#

Checkpoint aliases (2)#

realvis_xl_v5
RealVisXL_V5.0_fp16.safetensors
sdxl_base
sd_xl_base_1.0.safetensors

Models required (2)#

RealVisXL_V5.0_fp16.safetensors
sd_xl_base_1.0.safetensors

Output contract#

What a successful run of this workflow returns.

type
image
format
png
channels
4

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
canvas-extended-still
outputPackageProfile
image-single-profile
controlModalities
controlnet-inpaintmodel-lockseed-locklatent-reuse
consistencyDimensions
environmentlighting
notes
Core ImagePadForOutpaint with feathered differential-diffusion fill.