InstantID Pose Prepare Settings (JPS)
Frame your pose reference before InstantID ever sees it
- imageprepare_settings
InstantID's IdentityNet module reads facial landmarks from a reference image to constrain where and how the generated face sits in the frame - which means how that reference image is framed genuinely matters. A pose reference that's cropped tight, off-center, or a mismatched aspect ratio compared to your target canvas can throw the landmark conditioning off before generation even starts. This node is a dedicated settings bundle for fixing that framing - cropping, padding, resizing, flipping, and sharpening the pose image so it actually lines up with what you're generating.
It's a wide settings menu that outputs one imageprepare_settings pipe (JPS's BASIC_PIPE pattern, one wire carrying every value instead of a dozen separate connections). resize_to picks the overall strategy: resize the pose image to match your target canvas, resize it to match the source image instead, or leave its size untouched. offset_width/offset_height (-99 to 99) nudge the pose within the frame. Four crop values - crop_left, crop_right, crop_top, crop_bottom (0–90 each) - trim in from each edge independently, and four padding values - padding_left, padding_right, padding_top, padding_bottom (0–500 each) - add space back on any side if the pose needs breathing room rather than trimming. interpolation picks the resize algorithm (lanczos, nearest, bilinear, bicubic, area, or nearest-exact), sharpening (0–1) counters the softening a resize introduces, and flip mirrors the pose horizontally or vertically if you need to match a composition that's facing the wrong way.
Why this much control exists for one preprocessing step. A pose reference doesn't have to come from a perfectly framed photo - it might be cropped from a larger image, sourced at a different aspect ratio than your target, or just facing the wrong direction for the composition you want. Rather than making you fix all of that in an external image editor before it ever reaches ComfyUI, this node keeps the whole adjustment inside the graph, live and re-runnable, which matters a lot once you're iterating: change one crop value and re-queue, instead of round-tripping through Photoshop every time the framing's slightly off.
Where it fits. This is settings-only - it doesn't touch pixels itself, it's the configuration that a downstream image-processing node reads to actually perform the crop/pad/resize/flip/sharpen sequence on your pose reference before it feeds InstantID's pose-conditioning input. Pair it with InstantID Settings (JPS) for the identity/pose weight side of the same pipeline.
Installing it. ComfyUI Manager, search "JPS Custom Nodes for ComfyUI," or:
cd ComfyUI/custom_nodes
git clone https://github.com/JPS-GER/ComfyUI_JPS-Nodes.git
Restart, find it under JPS Nodes/Settings. No models bundled with this node, though the InstantID pipeline it feeds needs its own checkpoint and InsightFace's ArcFace models separately - and those carry a research/non-commercial license, worth knowing before you build a paid product around this.
Troubleshooting. If the generated pose doesn't match what you expected, check resize_to first - "Resize to Target" versus "Resize to Source" versus "Keep Size" produce meaningfully different framing, and it's an easy setting to leave on the wrong option out of habit. If the pose looks squeezed or stretched after processing, that's usually crop/padding values fighting each other (padding on one side while cropping heavily on the opposite side can produce an odd asymmetric result) - try zeroing everything out and adjusting one side at a time rather than tuning all eight crop/padding values simultaneously. And remember this node is InstantID-specific: SDXL only, no Flux path, since InstantID itself never shipped one.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| resize_to | COMBO | 3 options: Resize to Target, Resize to Source, Keep Size | |
| offset_width | INT | 0-99–99 | — |
| offset_height | INT | 0-99–99 | — |
| crop_left | INT | 00–90 | — |
| crop_right | INT | 00–90 | — |
| crop_top | INT | 00–90 | — |
| crop_bottom | INT | 00–90 | — |
| padding_left | INT | 00–500 | — |
| padding_right | INT | 00–500 | — |
| padding_top | INT | 00–500 | — |
| padding_bottom | INT | 00–500 | — |
| interpolation | COMBO | 6 options: lanczos, nearest, bilinear, bicubic, area, nearest-exact | |
| sharpening | FLOAT | 0.000–1 | — |
| flip | COMBO | 3 options: No, X-Axis, Y-Axis |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| imageprepare_settings | BASIC_PIPE | — |