- New nodes: Image Resize plus the Utility group (Text, Integer, Float, Show Text, Math Expression, Select Every Nth, Split Batch, Merge Batches, Free Memory) - the dependency-free gaps that let shared workflows drop heavy packs. - Replace with AusBoss nodes (prototype): preview-then-confirm graph rewrite swapping known third-party nodes for pack equivalents, with a tested translation map, per-node opt-out, and refuse-with-reason for nodes the pack cannot stand in for. - Load Video: single-frame FRAME picker, an honest "what will load" label from the probed source rate, drop-a-video-to-restore. Save Video: format-aware widgets and a file_path output. Stitch Inpaint gained a blend_mask output, Select Frame negative from-the-end indexing, Image Size a batch count - all appended, saved workflows load unchanged. - LoRA Loader: drag-to-reorder rows, hover thumbnails on rows, file size and date in the info card. - Appearance: flagship scheme deepened to slate-teal; the retired bright-teal pair upgrades automatically via LEGACY_SCHEME_PAIRS. Optional queue-completion chime, off by default. - Image Resize invariant: pixels are only invented on an explicit width+height pad request - scale-derived modes resolve divisible_by snaps with a sub-half-step resize, never bars. - Docs refreshed for six stale pages, stale text and metadata fixed across the pack, the panel-height rule codified in AGENTS.md and the brand skill, and ausboss_node_tour.json added - a model-free example exercising 17 node types in one graph. Validated: scripts/validate_nodes.py (24 files), 300 JS tests, all Python suites under the ComfyUI embedded interpreter.
3.7 KiB
3.7 KiB
Crop For Inpaint
Cuts the masked region — plus enough surrounding context — out of an image
so an inpainting model works at the region's native resolution instead of
shrinking the whole frame. Pairs with Stitch Inpaint 🆎, which
pastes the result back exactly where it came from. The extend_* inputs
grow the frame itself, which is how the pair outpaints.
Controls
- image: BHWC image or video frames to crop around the mask.
- mask: White marks the area to inpaint. A multi-frame mask is unioned into one crop window so a whole video shares one stitcher; an empty mask selects the full image (and stitches back unchanged).
- context_factor: Grows the mask bounding box symmetrically by this factor. The grown window is shifted back inside the frame first; only when it truly cannot fit is the image extended with edge-replicated padding.
- blend_pixels: Feather width used only when pasting back: the paste
mask is widened by this many pixels and blurred. The sampling mask sent
to the inpainter stays hard-edged, so feathering never weakens what the
model sees.
0pastes with the raw mask. - output_multiple: Crop and target dimensions are rounded up to a multiple of this so samplers accept them.
- target_width / target_height: Rescale the crop to a fixed size for
the sampler.
0keeps the native crop size; setting only one dimension derives the other from the crop's aspect ratio. Explicit values here overridetarget_megapixels.
Shaping the mask
- mask_grow: Dilate the sampling mask by this many pixels (negative
shrinks) so the inpainter repaints past the drawn edge. This reshapes
what gets painted, unlike
blend_pixels, which only feathers the paste-back. - mask_blur: Gaussian sigma softening the sampling mask's edge, for
models that honor soft masks.
0keeps the hard edge. - invert_mask: Inpaint the black area instead of the white area — everything outside the drawn region. Applied before growing or blurring.
Sizing the crop
- context_pixels: Flat extra context in pixels added around the mask
box after
context_factor's growth. - target_megapixels: Rescale the crop for the sampler so its area is
about this many megapixels —
1.0suits SDXL-class models,0keeps the native crop size. Explicittarget_width/target_heightwins. - rescale_algorithm: Resize filter for both directions of the sampler
round trip.
bilinearis the safe default,bicubickeeps upscales a touch crisper,areasuits heavy downscales,nearestnever invents pixels.
Outpainting
- extend_left / extend_right / extend_up / extend_down: Grow the frame itself by this many pixels on that side, before anything else. The new bands are replicate-filled, added to the mask, and become part of the stitched output — draw nothing and the extended bands alone are inpainted.
Outputs
- image: The cropped region, sized for the sampler.
- mask: The matching hard-edged sampling mask (soft only where
mask_blursays so). - stitcher: Everything Stitch Inpaint needs to put the result back.
Wiring
Load Image ── Crop For Inpaint ── image ──> LaMa Inpaint ── image ──> Stitch Inpaint
│ └── mask ─────────────────┘ │
└── stitcher ───────────────────────────────────────────┘
Any inpainting sampler fits between the two nodes the same way — connect
the crop's image and mask to it, then its output to Stitch Inpaint's
inpainted input.