Nodes/ComfyUI Impact Pack/Image Receiver
ComfyUI Node Runs on cloud

Image Receiver

Pull in an image (and its mask) sent by link_id

By ltdrdata·Created 3 years ago·Updated 4 months ago· 3,242
Image Receiver
    • IMAGE
    • MASK
    image
    link_id0
    save_to_workflowfalse
    image_data
    trigger_alwaysfalse

    ImageReceiver is the catching end of Impact Pack's wireless image handoff. An ImageSender somewhere saves an image tagged with a link_id; a Receiver set to the same number picks it up, no wire crossing the canvas. From the README: "The images generated in ImageSender are automatically sent to the ImageReceiver with the same link_id." So the whole trick is one number matching on both ends.

    Where it really pays off is anywhere a wire would be ugly or impossible. Split a sprawling workflow into a generation half and a processing half and connect them by link_id. Or - the use that shows up in the wild - build feedback loops across runs, like feeding the last AnimateDiff frame back into the next batch, since the handoff goes through disk rather than a live connection. A bonus most people miss: the Receiver also hands you a MASK, so it's a tidy way to bring a masked image in from elsewhere.

    How it works

    The Sender writes the image to the ComfyUI output directory keyed by link_id; the Receiver reads it back. The image widget on the node is a picker for the received file (it shows the incoming image), and the node decodes both the picture and any alpha as a separate mask output. It's a file-backed channel, which is exactly why it can bridge separate queue runs and not just separate corners of one graph.

    The inputs and outputs

    • link_id (default 0) - the channel number. Match it to the Sender you want to receive from. This is the input that matters.
    • image - the received-file selector.
    • save_to_workflow (default false) - embed the received image into the saved workflow so it travels with the file.
    • trigger_always (default false) - re-fetch every run rather than only when the input changes, which is what you want for a live feedback loop.
    • image_data - the carried image payload (string), used internally for the save-to-workflow behavior.

    Two outputs: IMAGE (the received picture) and MASK (its alpha, if any). Wire them into whatever comes next - a detailer, a compositor, another sampler.

    How to install it

    ComfyUI Manager: search ComfyUI Impact Pack, install, restart. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack, install requirements into ComfyUI's Python (pip install -r requirements.txt, or ..\..\..\python_embeded\python.exe -m pip install -r requirements.txt on Windows portable), then restart. Auto-install ended at v7.6, so run the requirements yourself. A small SAM model downloads to ComfyUI/models/sams on first run.

    Common issues

    Nothing comes through. Mismatched link_ids. A Receiver on link_id 0 only sees Senders on link_id 0 - the single most common mistake with this pair. Confirm both numbers match.

    It's showing a stale image. The Receiver reads what the Sender last wrote to disk, so if the Sender hasn't run this session, you get the previous file. For feedback loops where you want a fresh fetch every queue, turn on trigger_always so it re-reads instead of caching the input.

    You need latents, not images. This pair moves images. For passing a latent between graph regions or runs, the pack ships LatentSender / LatentReceiver - same link_id idea, latent payload. Note the README's caveat there: LatentSender can't tell SDXL latents from SD1.5, so its thumbnails are decoded the SD1.5 way.

    CategoryImpactPack/Util

    Inputs (5)

    NameTypeDefaultDescription
    imageCOMBO1 options: example.png
    link_idINT00–9223372036854776000
    save_to_workflowBOOLEANfalse
    image_dataSTRING
    trigger_alwaysBOOLEANfalse

    Outputs (2)

    NameTypeDescription
    IMAGEIMAGE
    MASKMASK