Prepare Image Tiled IPA (JPS)
Prepping one tile at a time for tiled IP-Adapter
- image
- IMAGE
The "IPA" in the name means IP-Adapter, and this node exists to solve one specific, real annoyance with it: plain IP-Adapter forces your reference image into a square crop before encoding it. Hand it a wide landscape reference and the standard node will crop straight to the center square, throwing away most of the image. The community's workaround is tiled IP-Adapter - split the reference into several tiles across its width, CLIP-vision-encode each tile separately, and apply them together - so the whole reference actually gets used instead of just its middle square. This node is the prep step for that: it produces one correctly cropped, zoomed, and sharpened tile at a time, ready for a CLIP Vision Encode node.
If you don't already know why you'd want more than one CLIP vision embedding out of a single reference image, you probably don't need this node yet - start with the plain Prepare Image (JPS) and only reach for this once you've noticed your IP-Adapter results feel cropped or like they're missing most of a wide reference.
How it works
You'd typically wire up several instances of this node, one per tile, each pointed at the same source image but with a different prepare_type. tile_short sets how many tiles the image's short side gets split into - it's the grid density. prepare_type (1–9) picks which specific tile in that grid this particular node instance outputs. zoom lets you crop in tighter within a tile before the final resize, trading field of view for per-tile detail. offset_w/offset_h, interpolation, and sharpening work the same way they do in the rest of the Prepare Image family - positioning the crop and cleaning up the resize.
Note this node only gets pixels ready. Turning those tiles into actual conditioning still needs the separate ComfyUI_IPAdapter_plus node pack (Load IPAdapter, Apply IPAdapter) - JPS doesn't ship its own IP-Adapter implementation, it ships the image prep that a tiled IP-Adapter workflow needs.
The inputs and outputs that matter
image(IMAGE, required);target_w,target_h(INT, default 0, steps of 8) - set to your per-tile target size.zoom(INT, 1–500, default 1) - crops in tighter before resizing; higher values trade field of view for detail.offset_w/offset_h(INT, ±4096) - positions the crop.interpolationandsharpening- same options as the rest of the Prepare Image family.tile_short(INT, 1–5, default 2) - how many tiles the short side is split into.prepare_type(INT, 1–9, default 1) - which tile in the grid this node instance outputs.- Output:
IMAGE- one prepared tile.
How to install it
ComfyUI Manager: search "JPS Custom Nodes for ComfyUI." Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/JPS-GER/ComfyUI_JPS-Nodes.git
Restart. This node itself has no extra dependencies, but to do anything with its output you'll also need cubiq/ComfyUI_IPAdapter_plus installed separately, plus whatever IP-Adapter weights and CLIP vision encoder that pack requires.
Common issues & troubleshooting
IP-Adapter itself has aged out of some architectures. Worth knowing before you build a whole tiled setup around it: the reference IP-Adapter node pack covers SD 1.5, SDXL, and Kolors, with no Flux support, and its maintainer has described the repo as "maintenance-only." It still works well on SD 1.5/SDXL, but it isn't where active development is happening anymore.
tile_short / prepare_type combinations that don't make sense together. Asking for a prepare_type that doesn't correspond to a valid position in your chosen tile_short grid will likely just clamp to something rather than error cleanly - if a tile looks duplicated or oddly positioned, double check the two values are consistent with each other before assuming the node is broken.
Reference still feels "cropped." IP-Adapter's own known weakness is encoding the face/subject region well and losing peripheral detail - tiling helps get more of the source image into the conditioning path, but it won't fix IP-Adapter's general softness on full-body or off-center detail. That's a limitation of the adapter itself, not something this prep node can solve.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| target_w | INT | 0 | — |
| target_h | INT | 0 | — |
| zoom | INT | 11–500 | — |
| offset_w | INT | 0-4096–4096 | — |
| offset_h | INT | 0-4096–4096 | — |
| interpolation | COMBO | 6 options: lanczos, nearest, bilinear, bicubic, area, nearest-exact | |
| sharpening | FLOAT | 0.000–1 | — |
| tile_short | INT | 21–5 | — |
| prepare_type | INT | 11–9 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |