Load and Crop Image
A Load Image Node That Can Hand the Crop to Someone Else
- image_copper
- images
HfLoadImageWithCropper looks, at first glance, like a very boring node: it loads an image from ComfyUI's input folder, exactly like the built-in Load Image. The twist is in the name - "with Cropper." There's a second, optional input socket of type IMAGE_COPPER, and when you wire a cropper into it, the load step doesn't just hand you the image; it hands you the cropped image.
That little IMAGE_COPPER type is the whole point, and it's worth pausing on because it's also where this node gets confusing. In the source, the optional input is typed against the pack's ImageCropper abstraction - an interface that takes a PIL image and returns a cropped one, wrapped in a helper that applies it across an entire batch. The same abstraction powers HfImageAutoExpansionSquare, whose square cropper does the zoom-and-crop trick. So the design is: load here, plug a cropper in, get a pre-cropped tensor out, never think about it again.
What's in the schema:
image- a dropdown of files inComfyUI/input/, with an upload button, same as coreLoad Imageimage_copper- optional, theIMAGE_COPPERhook (yes, the author spells it "copper" - that typo is in the type name itself)- output:
images, an IMAGE tensor
The load logic has a couple of genuinely nice details. It applies EXIF transpose, so phone photos that were saved sideways get rotated correctly on load - a real quality-of-life thing if you work with camera shots. It converts to RGB before handing the tensor out, so no surprise channel counts downstream. And there's a small defensive quirk in the source: if the selected file doesn't exist, it substitutes a blank 512×512 image instead of hard-failing, which is friendly behavior but can mask a typo in your input path.
The realistic take. With nothing wired into image_copper, this node is just Load Image with EXIF handling - perfectly serviceable, not a reason to install the pack. The cropper hook is the differentiator, but here's the wrinkle: this pack doesn't output an IMAGE_COPPER anywhere. Nothing in the HiFORCE node list produces that type. So in practice the cropper comes from outside the pack - the natural source is the same detect-crop-resample-paste ecosystem of ComfyUI-Impact-Pack, which the README explicitly tells you to install first ("Many optimizations are built upon the foundation of ComfyUI-Impact-Pack"). In other words, this node is most useful inside a broader HiFORCE/Impact-Pack workflow where a cropper already exists, and less useful as a standalone pickup.
If you're not running that ecosystem, you can safely reach for core Load Image and save yourself a custom node. If you are - if the pack's sampler or image-enhancement nodes are already in your graph - this is the load node that slots into the cropper pipeline without a fight.
Installation is the shared HiFORCE story. It lives in Comfyui HiFORCE Plugin (HiFORCE, hiforce.net), a niche, author-maintained pack with essentially no community footprint on Reddit - we checked. Get it through ComfyUI Manager by searching "Comfyui HiFORCE Plugin," or:
cd ComfyUI/custom_nodes
git clone https://github.com/hiforce/comfyui-hiforce-plugin.git
cd comfyui-hiforce-plugin
pip install -r requirements.txt
Then restart ComfyUI - you'll find it under HiFORCE → Image → Create. Requirements are torch, numpy, Pillow, and requests; no models to download for this node. And because the community signal is basically zero, the GitHub wiki and the (short) source are your docs when something surprises you.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | 1 options: example.png | |
| image_copperopt | IMAGE_COPPER | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |