π§ Qwen Compositor
The node that puts your edited segment back exactly where it came from
- original_image
- edited_segment
- composite_image
Qwen Compositor is the "put it back" half of the Geeky Qwen Edit suite, and it's the node that makes the whole segment-edit-recompose workflow feel like cheating. You crop a region out of an image with Qwen Segment Loader, edit that piece however you like, and this node pastes the edited segment back onto the original at the exact same coordinates - automatically, including any scaling that happened along the way. No manual re-cropping, no eyeballing alignment, no "close enough."
The mechanics are grounded and worth understanding because they explain what can go wrong. The node takes three required inputs: original_image, edited_segment, and segment_metadata - that last one is a JSON string, and it's the key to the whole trick. It's produced by Qwen Segment Loader and records the original image size, the segment's crop coordinates, and its dimensions before and after any resizing. The compositor parses that JSON, resizes your edited segment back to the original crop size with LANCZOS resampling (preserving alpha if present), and stamps it back at the recorded X/Y position. It's a lossless-ish round trip: whatever you did to the segment in between, the compositor knows what dimensions to restore so it lands in the original frame with no distortion.
One thing to flag: it doesn't wait politely for the metadata. If segment_metadata isn't valid JSON, the node raises a clear error. That's your first troubleshooting port of call - feed it the metadata from GeekyQwenSegmentLoader, or any JSON in the same shape, but don't hand it a random string.
The optional inputs are where you get creative. blend_mode defaults to normal and offers multiply, screen, overlay, and soft_light - the node crops the original segment region out of the background and blends the edited version against it, so a multiply or screen pass behaves like a real compositing blend rather than a lazy paste. opacity (0β1) fades the whole paste. feather_edges (0β50) softens the segment's border by building a gradient mask and blurring it - genuinely useful when your cutout has a hard edge that screams "I was cropped."
The alpha handling is the detail that makes this pack coherent. The edited segment keeps its transparency (say, from a background-removal node or Qwen Effects), and the compositor alpha-composites it onto the original rather than flattening over it. There's a catch worth knowing: the final result is flattened to RGB on a white background, because that's what downstream save/encode nodes expect. So a segment that's semi-transparent over a dark area will show a faint white halo - composite onto a white backing or keep your alpha fully opaque at the edges and you'll never see it.
Output is a single composite_image; wire it to a Save Image node and you're done. The intended chain is loader β (RemBG β Qwen Effects) β this node, and it closes the loop cleanly.
Install is the same light-touch story as the rest of the pack. ComfyUI Manager, search "ComfyUI-Image-Segmenting-Loader", or:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/ComfyUI-Image-Segmenting-Loader
Restart ComfyUI. Dependencies are Pillow>=9.0.0, torch>=1.13.0, numpy>=1.20.0 - nothing extra to fetch, no model files.
Two honest limits before you build something ambitious on it. First, it recomposes one segment at a time - the pack was designed for "edit one region per generation," and people pushing it toward multi-chunk workflows (e.g. slicing a large image into tiles for Qwen-Image-Edit and reassembling) find themselves running the chain once per segment. It works; it's just sequential. Second, blend modes only apply when you actually change blend_mode or opacity - at the defaults the node takes the simple paste path, which is fast and fine. If your result looks wrong and you expected a blend, check that you've actually moved one of those sliders off its default.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| original_image | IMAGE | β | |
| edited_segment | IMAGE | β | |
| segment_metadata | STRING | β | |
| blend_modeopt | COMBO | normal | 5 options: normal, multiply, screen, overlay, soft_light |
| opacityopt | FLOAT | 1.000β1 | β |
| feather_edgesopt | INT | 00β50 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| composite_image | IMAGE | β |