Crop Image
Crop by a bounding box instead of four numbers
- image
- crop_region
- IMAGE
The classic Crop Image node took four numbers - x, y, width, height - and cut a rectangle. Its modern successor, ImageCropV2, takes the same rectangle but as a single bounding box object instead of four loose integers. Same result, much better wiring story: you can drive the crop from another node instead of hand-typing coordinates.
It's part of the newer generation of core built-ins (search it as "Crop Image" - the old one is now the one marked deprecated). Nothing to install; it's in the base install.
How it works
The crop_region input is a BOUNDING_BOX - a little bundle of x, y, width, height that travels on one wire. In the ComfyUI UI you'll usually create one from the Bounding Box primitive node (search "Bounding Box" in the node menu), which is just four number fields grouped together. Wire that into ImageCropV2 and you get the crop.
The actual cut is a raw tensor slice - no resampling, no auto-resize, no smart centering. What you ask for is what you get: pixels from x to x+width, y to y+height, straight out. The node also has an intermediate output, so the crop previews in the UI as you drag the box around, which makes dialing in a region genuinely fast.
Inputs and output
- image - anything producing an IMAGE.
- crop_region - the bounding box. Defaults to
{0, 0, 512, 512}, which is a friendly default for square-ish crops but a footgun if you forget to wire your own box.
Output is a single IMAGE: the cropped region, unchanged in scale. Wire it to a preview, a Save Image, or the next stage.
Why you'd use it over the old crop node
Three reasons:
- A wired box is reusable. Set up one Bounding Box primitive and feed it to several crop nodes, or swap the box source for a node that computes one - a detector, a grounding model, a face tracker. Your crop becomes a value other nodes can produce, not something you retype.
- It's the clean end of the pipeline. When a grounding model hands you a box for "the coffee cup," you feed that box straight in. This is the crop half of the 2025+ "VLM names it, box it, crop it, edit it" pattern.
- One node instead of a coordinate spreadsheet. Four numbers collapsed into one wire is easier to read on a graph.
Where it bites
- The coordinate source. If you're looking for x/y/width/height fields on the node itself, they're not there - the box is a separate node. Beginners consistently look for numbers on the crop node and get confused.
- No bounds clamps, mostly. The implementation clamps the origin into the image but doesn't grow to fit; ask for a box that runs past the edge and you get a shorter crop, not an error.
- The latent rule again. Crop regions produce arbitrary dimensions, and a raw crop straight into a VAE encode can shave your canvas. If the crop feeds a sampler, follow it with a resize to a multiple of 8 (or 64).
- It doesn't resize to fill. Ask for a 512×512 box around a 100-pixel face and you get a 512×512 box mostly full of background - there's no upscaling here. Chain a resize or an upscale after if the region is small.
Small, precise, and scriptable-by-wiring. If you ever crop the same spot across many images, or want a detector to choose the crop for you, this is the node.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| crop_region | BOUNDING_BOX | [object Object] | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |