Nodes/MultiBand/Load Multiband Image
ComfyUI Node

Load Multiband Image

Open your .npy, .npz, .tiff, or .exr back into the graph

By PozzettiAndrea·Created 9 months ago·Updated 21 days ago· 5
Load Multiband Image
    • multiband
    • num_channels
    • channel_names
    image
    normalizetrue

    Load Multiband Image is how you get a multi-channel file back into your graph after the pack saved it. It reads .npy, .npz, .tiff/.tif, and .exr and hands you a MULTIBAND_IMAGE - plus the channel count and names as separate outputs, so you can see what you're working with without guessing.

    This node follows the ComfyUI convention you already know from Load Image: it reads from the input/ folder, and the widget is a dropdown of the supported files sitting there. Put your file in ComfyUI/input/, refresh, pick it, done. If your file lives somewhere else on disk, the pack's sibling Load Multiband Image from Path takes an absolute path instead - same outputs, different file source.

    How it works

    The loader dispatches on file extension and reads accordingly:

    • .npy - plain NumPy array. Fast, no metadata: no channel names, so they get auto-generated.
    • .npz - compressed NumPy with the pack's channel names and metadata stored alongside. The richest of the quick formats.
    • .tiff / .tif - multi-page or multi-channel TIFF. Channel names are read from the ImageDescription tag if the file was written by the pack.
    • .exr - OpenEXR, for HDR / named-channel work. Optional: only works if you've installed OpenEXR and Imath (pip install OpenEXR Imath). Without them you get an ImportError telling you exactly that.

    The normalize toggle (default on) handles the value range: if the raw values exceed 1.0, it scales them into [0, 1] - dividing by 255 for 8-bit-style data, or by the max for larger ranges. Turn it off if you're loading spectral or feature data where the raw scale is the information and you don't want it touched.

    The outputs

    • multiband - the data itself, as (B, C, H, W).
    • num_channels - how many channels you just loaded. Wire this into a display node if you like; it's the quick sanity check.
    • channel_names - comma-separated names, from the file's metadata when present.

    A nice mechanical touch: the loader hashes the file contents to decide whether it changed, so editing the file on disk and re-running actually reloads it - no stale-cache confusion.

    Installing the pack

    From ComfyUI-Multiband. ComfyUI Manager → search "ComfyUI-Multiband" → Install → restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/PozzettiAndrea/ComfyUI-Multiband.git
    pip install -r ComfyUI-Multiband/requirements.txt
    

    numpy, torch, and tifffile are the required deps. tifffile ships in requirements, so TIFF works out of the box; EXR does not until you add OpenEXR Imath.

    Where people stumble

    The classic one: dropping a .npy that has no channel names and then wondering why channel_names looks generic - that's the format's limit, not a bug. And if you're trying to load a file that isn't in input/, this node can't see it; that's what the path variant is for. Check the console on load - it prints the shape and channel count, which makes debugging a wrong-format file much faster.

    Categorymultiband/io

    Inputs (2)

    NameTypeDefaultDescription
    imageCOMBOMultiband image file (.npy, .npz, .tiff, .tif, .exr)
    normalizeoptBOOLEANtrueNormalize values to [0, 1] range

    Outputs (3)

    NameTypeDescription
    multibandMULTIBAND_IMAGE
    num_channelsINT
    channel_namesSTRING