Nodes/h4_Live/h4 - Multi Image Upload
ComfyUI Node

h4 - Multi Image Upload

Ten reference images, ten clean outputs

By m3rr·Created 9 months ago·Updated 10 days ago· 1
h4 - Multi Image Upload
    • IMAGE_1
    • MASK_1
    • IMAGE_2
    • MASK_2
    • IMAGE_3
    • MASK_3
    • IMAGE_4
    • MASK_4
    • IMAGE_5
    • MASK_5
    • IMAGE_6
    • MASK_6
    • IMAGE_7
    • MASK_7
    • IMAGE_8
    • MASK_8
    • IMAGE_9
    • MASK_9
    • IMAGE_10
    • MASK_10
    image_1
    image_2
    image_3
    image_4
    image_5
    image_6
    image_7
    image_8
    image_9
    image_10

    ComfyUI's stock Load Image is fine for one reference. The moment you want five - a character sheet, style refs, inpainting regions - you either stack five loaders and chase the spaghetti, or you hunt for a pack that does multi-load sanely. The h4 - Multi Image Upload is the saner option: up to ten image slots in one node, each with its own IMAGE and MASK output, and upload fields right on the widget.

    It's a stripped-down slice of h4_Live's bigger all-in-one loader, and honestly it's the kind of node that quietly becomes the backbone of a workflow the moment you start doing multi-reference or inpainting work.

    How it works

    Under the hood it's doing exactly what you'd hope: it lists the image files in ComfyUI's input directory, gives you a dropdown per slot (image_1 through image_10) with an upload button, and loads each selected file through ComfyUI's normal image-loading path. Empty slots are handled gracefully - you get a blank placeholder tensor and an empty mask instead of an error, so you can wire all ten outputs from day one and just not fill in some of them. That's a nice property: your graph stays stable while you swap which slots are actually populated.

    Each slot yields two outputs:

    • IMAGE_N - the image tensor for reference, IPAdapter, image-to-image, or whatever consumer you're feeding.
    • MASK_N - the alpha/mask channel. Use it when the uploaded file has transparency, or when you're feeding an inpainting region.

    The inputs and outputs that matter

    Honestly there's no input configuration to speak of - the ten dropdowns are the inputs. The real decision is which slot maps to which part of your workflow. A typical pattern: slots 1–3 hold character references that all feed an IPAdapter or a face-detailing branch, slot 4 holds a base image for image-to-image, slot 5 an inpainting mask source. Because every slot always outputs IMAGE + MASK, you can build the whole graph once and treat the uploads as swappable data.

    Installing it

    It's part of h4_Live:

    cd ComfyUI/custom_nodes
    git clone https://github.com/m3rr/h4_Live
    # restart ComfyUI
    

    or ComfyUI Manager → search "h4_Live." No extra dependencies.

    Where it can bite you

    The dropdowns read from ComfyUI's input directory, so files you upload via the node land there - that's standard, but if you drag a file in from elsewhere it may not show up until it's actually in the right folder. Also, the "10 slots" number is fixed, not dynamic: if you need eleven, this node won't grow to fit. And the blank-slot placeholder behavior, while convenient, can mask mistakes - if you forget to select an image you'll quietly generate from a tiny blank latent rather than hitting an error. That's usually harmless (you'll see it in the output) but it's worth knowing why your result looks like a solid-color test card.

    Categoryh4_Live/Loaders

    Inputs (10)

    NameTypeDefaultDescription
    image_1optCOMBO2 options: none, example.png
    image_2optCOMBO2 options: none, example.png
    image_3optCOMBO2 options: none, example.png
    image_4optCOMBO2 options: none, example.png
    image_5optCOMBO2 options: none, example.png
    image_6optCOMBO2 options: none, example.png
    image_7optCOMBO2 options: none, example.png
    image_8optCOMBO2 options: none, example.png
    image_9optCOMBO2 options: none, example.png
    image_10optCOMBO2 options: none, example.png

    Outputs (20)

    NameTypeDescription
    IMAGE_1IMAGE
    MASK_1MASK
    IMAGE_2IMAGE
    MASK_2MASK
    IMAGE_3IMAGE
    MASK_3MASK
    IMAGE_4IMAGE
    MASK_4MASK
    IMAGE_5IMAGE
    MASK_5MASK
    IMAGE_6IMAGE
    MASK_6MASK
    IMAGE_7IMAGE
    MASK_7MASK
    IMAGE_8IMAGE
    MASK_8MASK
    IMAGE_9IMAGE
    MASK_9MASK
    IMAGE_10IMAGE
    MASK_10MASK