ComfyUI Node

Crop Image+

A crop node you drag instead of one you type coordinates into

By FranckyB·Created 6 months ago·Updated 3 days ago· 13
Crop Image+
  • image
  • mask
  • image
  • mask
left_pct0.0
right_pct100.0
top_pct0.0
bottom_pct100.0
aspect_ratioNone
portraitfalse

Crop Image+ is the crop node you actually want when you're framing a reference image for an image-to-video pass or cropping a face region for a detailer: an interactive box you drag directly in the node, with an aspect-ratio lock so your crop is guaranteed to come out 16:9 (or 1:1, or whatever) instead of 16:9-and-a-bit because your mouse wobbled.

It's part of ComfyUI-FBnodes, François Beaudry's utility pack, and it solves the oldest annoyance in ComfyUI image editing - core's CropImage makes you type percentages into four boxes and think about what "top 25%" means. This one shows you the actual image and lets you drag.

How it works

Feed an image (and optionally a mask) in, and the node renders a preview with a draggable crop box and corner handles. Under the hood the box position is stored as four percentages - left_pct, right_pct, top_pct, bottom_pct, each 0–100 - so the crop is resolution-independent and stays where you put it if you swap a different-size image in later. The box is live: move it, and the four pct values update.

The aspect-ratio lock is where it gets genuinely useful. Pick 16:9 (Widescreen) from aspect_ratio and the node refits your dragged rectangle to exactly that ratio, growing it in whichever direction it needs. portrait (BOOLEAN) flips the selected ratio - 16:9 becomes 9:16 - which matters because half of AI video work these days is vertical. Choosing Source locks to the input image's own ratio; None (the default) leaves you freeform.

Two details the README calls out: a new input image resets the crop to the full frame and the ratio back to None, so you don't accidentally carry a crop from a previous image into a new one; and it crops image and mask together, both outputs emitted, which is what you want when you're cropping a mask region for inpainting.

Inputs that matter

  • image (IMAGE, optional) - what you're cropping.
  • mask (MASK, optional) - cropped to the same box, emitted alongside.
  • aspect_ratio - None / Source / 1:1 / 3:2 / 4:3 / 16:9 / 21:9.
  • portrait - flip the ratio to vertical.

Outputs: image and mask, both cropped to the same region.

Installing it

ComfyUI Manager - search "ComfyUI-FBnodes" - or:

cd ComfyUI/custom_nodes
git clone https://github.com/FranckyB/ComfyUI-FBnodes.git
pip install -r ComfyUI-FBnodes/requirements.txt

Restart ComfyUI. Pure frontend + basic tensor slicing, so the pack's only real dependencies (av, color-matcher) are there for the video nodes - no model downloads for this one.

Where it's fiddly

The four pct values are percentages of the source, not pixel coordinates, so if you're coming from a pixel-based crop node, expect to eyeball it. That's fine - the whole point is that you drag the box instead of computing. The one thing to remember: because the node resets on a new image, if you're feeding it a changing batch you'll want to set your ratio and re-drag each time. It's an interactive node for an interactive job, not a batch tool.

CategoryFBnodes

Inputs (8)

NameTypeDefaultDescription
left_pctFLOAT0.00–100
right_pctFLOAT100.00–100
top_pctFLOAT0.00–100
bottom_pctFLOAT100.00–100
aspect_ratioCOMBONone7 options: None, Source, 1:1 (Square), 3:2 (Photo), 4:3 (Standard), 16:9 (Widescreen), +1
portraitBOOLEANfalse
imageoptIMAGE
maskoptMASK

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK