Files
ausboss-ComfyUI-AusBoss/js/docs/AUSBOSS_NODES_CropForInpaint.md
T
ausboss 3f715a4af8 Ship the crush-list build-out: 7 new node files, replace button, video and LoRA polish
- 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.
2026-08-27 13:30:35 -05:00

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. 0 pastes 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. 0 keeps the native crop size; setting only one dimension derives the other from the crop's aspect ratio. Explicit values here override target_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. 0 keeps 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.0 suits SDXL-class models, 0 keeps the native crop size. Explicit target_width/target_height wins.
  • rescale_algorithm: Resize filter for both directions of the sampler round trip. bilinear is the safe default, bicubic keeps upscales a touch crisper, area suits heavy downscales, nearest never 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_blur says 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.