Nodes/ComfyUI-ParamNodes/Image Path Param
ComfyUI Node

Image Path Param

Load an image your backend chose, not the file picker

By FaraamFide·Created about a year ago·Updated about a year ago· 1
Image Path Param
    • IMAGE
    • MASK
    image_pathinput/example.png

    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.png means <your ComfyUI folder>/input/example.png, and output/foo.png means 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 FileNotFoundError with 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 MASK output - 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.

    CategoryParams/Input

    Inputs (1)

    NameTypeDefaultDescription
    image_pathSTRINGinput/example.png

    Outputs (2)

    NameTypeDescription
    IMAGEIMAGE
    MASKMASK