Load Multiband Image
Open your .npy, .npz, .tiff, or .exr back into the graph
- multiband
- num_channels
- channel_names
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
OpenEXRandImath(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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | COMBO | Multiband image file (.npy, .npz, .tiff, .tif, .exr) | |
| normalizeopt | BOOLEAN | true | Normalize values to [0, 1] range |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| multiband | MULTIBAND_IMAGE | — |
| num_channels | INT | — |
| channel_names | STRING | — |