Nodes/c4f-wire-loom/Loom Image Out
ComfyUI Node

Loom Image Out

The other half of your image-routing stream

By Codes4Fun·Created 3 months ago·Updated about a month ago· 0
Loom Image Out
  • loom
  • LOOM
  • IMAGE
  • exists
label

You've pushed an image into the loom with Loom Image In - now you need it back. Loom Image Out is the matching pull node: it grabs the image stored under a label and hands it to whatever's next, while passing the loom through so the rest of your stream keeps flowing.

Why you'd reach for it

Every subgraph that consumes an image ends with one of these. The img2img stage, the edit stage, the preview stage - each one starts with Loom Image Out pulling the current image out of the stream. If a stage modifies the image, it feeds the result back through Loom Image In (same label), and everything downstream sees the updated version. That loop is the entire c4f-wire-loom concept, and Loom Image Out is the read side of it.

Because it reads without removing, you can also branch: one image in the loom, three subgraphs each pulling their own copy through Loom Split. The original stays put, so every branch gets a consistent starting point.

How it works

A lookup, not a removal:

key = f"IMAGE_{label}" if label else "IMAGE"
if key not in loom:
    return (loom, None, False)
return (loom, loom[key], loom[key] != None)

The loom is passed through untouched - multiple readers can pull the same image, and nothing disappears from the stream when you read it.

The outputs that matter

  • IMAGE: the image under that label, or None if absent.
  • exists (BOOLEAN): True when the key exists. This is your debug light - wire it to a Primitive or use it to gate a branch ("only run this stage if the image made it into the loom").
  • LOOM: the unchanged loom, passed onward.

Inputs are loom (LOOM, required) and label (string), which must match the Loom Image In that stored the image.

Installing

Part of c4f-wire-loom. ComfyUI Manager → search "c4f-wire-loom" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom

No models, no extra deps - restart and it's available.

Where it bites

Same label-mismatch trap as every loom out node: exists returns False when the label doesn't match anything, and the cause is almost always a typo or an IMAGE_ prefix mismatch (Loom Image In with label image2 stores under IMAGE_image2 - use the same image2 on the out node, not IMAGE_image2). Second trap: the stream is one-directional. If the image is stored after this node in the execution order, the loom hasn't seen it yet, so you get None. Check node order before debugging anything else. The pack-wide Nodes 2.0 arrow-drag collapse quirk applies, with the built-in workaround.

Categoryutils/route

Inputs (2)

NameTypeDefaultDescription
loomLOOM
labeloptSTRING

Outputs (3)

NameTypeDescription
LOOMLOOM
IMAGEIMAGE
existsBOOLEAN