Image Path Param
Load an image your backend chose, not the file picker
- IMAGE
- MASK
ComfyUI's built-in LoadImage is a file picker. That's great for sitting at the machine, useless when an API request is supposed to decide what gets img2img'd or ControlNet-conditioned. Image Path Param is the fix: it's a plain string input that loads the image at that path and hands you IMAGE and MASK outputs, ready to wire into VAEEncode, an IP-Adapter, or a ControlNet preprocessor.
It's the only node in this pack that actually does real work beyond passing a value through, so it's worth understanding what it does under the hood.
How it works
You give it one input: image_path, a string that defaults to input/example.png. From the source, here's the exact behavior:
- Relative paths resolve against ComfyUI's base directory, not your shell's working directory. So
input/example.pngmeans<your ComfyUI folder>/input/example.png, andoutput/foo.pngmeans the output folder. This is deliberate - it lets your backend write a file to a known location and hand over a short, portable path. - Absolute paths work as-is, which is handy if your backend drops files somewhere outside the ComfyUI tree.
- If the file doesn't exist, it raises
FileNotFoundErrorwith the resolved path in the message. That's the failure you'll actually see, and the message tells you exactly where it looked. - Images are loaded with PIL, auto-rotated via EXIF, and converted to the standard 0–1 float tensor format every other ComfyUI node expects.
- If the image has an alpha channel, it becomes the
MASKoutput - inverted, so white in the alpha means "masked," matching ComfyUI's own mask convention. No alpha channel means you get a 64×64 all-zero mask, not an error. That's a silent detail worth remembering if you're inpainting with images that lack transparency. - Multi-frame files (GIFs, animated formats) get stacked into a batch rather than silently taking the first frame.
The two outputs you actually care about
IMAGE is the image tensor - that's what goes into samplers, encoders, and IP-Adapters. MASK is the transparency-derived mask for inpainting or compositing. If you're not inpainting, ignore MASK and route IMAGE to VAEEncode or a LoadImage-replacement spot in your graph.
Where people trip up
The single biggest trap is assuming the path is relative to where you launched something. It isn't - it's relative to the ComfyUI install. A second one: the server process has to be able to read the file. If your backend is on a different machine, "input/foo.png" only works if that path exists on the box running ComfyUI. The pack's own README is upfront about this: the file must be accessible by the ComfyUI server. And if your image lacks an alpha channel, remember that mask is zeros - a "blank" mask is expected, not a bug.
Install
Via ComfyUI Manager, search "ComfyUI-ParamNodes". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/FaraamFide/ComfyUI-ParamNodes.git
Restart ComfyUI afterward. No extra dependencies, no model downloads. It lives under Params/Input in the Add Node menu.
This is the node that makes image-to-image genuinely drivable from an API. Everything else in the pack is about numbers and text; this one is about getting a picture into the graph the same way.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image_path | STRING | input/example.png | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |