Nodes/ComfyUI-mnemic-nodes/πŸ–ΌοΈ Download Image from URL
ComfyUI Node

πŸ–ΌοΈ Download Image from URL

Grab an image off the web and wire it straight into the graph

By MNeMoNiCuZΒ·Created 3 years agoΒ·Updated a day agoΒ· 105
πŸ–ΌοΈ Download Image from URL
    • image
    • width
    • height
    β—„image_urlβ–Ί
    β—„save_file_name_overrideβ–Ί
    β—„save_pathβ–Ί

    πŸ–ΌοΈ Download Image from URL does one small job: you paste an image URL, it fetches the file, and you get an IMAGE tensor plus width and height outputs. No browser tab, no dragging files into input/, no "where did I save that reference image" - the working queue hands the image straight to the next node.

    The realistic uses are mundane but constant: a mood-board reference for img2img, a scraped dataset of images you want to caption with a VLM node, a batch of style references while you iterate. And since it's an output-type node, a graph built around one URL is a one-click fetch-and-process.

    What actually happens

    The node sniffs the file extension off the URL string itself - .jpg, .jpeg, .png, .webp - and rejects anything else before it ever makes the request. Then it does a plain requests.get, opens the bytes with Pillow, converts to RGB, and hands back a tensor. Width and height come out as separate integer outputs, which is handy on its own: feed them into a size selector or bake them into a filename instead of eyeballing the number.

    Three inputs, and only one is required:

    • image_url - the URL.
    • save_file_name_override - optional filename. You can include or omit the extension; if you include one it keeps that extension without converting the image, so naming a jpeg .png gets you a mislabeled file, not a conversion.
    • save_path - optional folder to write into. It gets created if it doesn't exist.

    Where people get burned

    The extension check. This is the number one failure. URLs that end in something else, or that hide the format behind a query string (https://host/img?id=12345), or modern formats like .avif and .gif, all get rejected with a console message and None on every output - including width and height, so downstream nodes fail with a confusing type error rather than "bad URL". If a link won't load, check what the URL actually ends with before you blame the network. A CDN link ending in .webp works; the same asset behind /image?format=auto doesn't.

    Nothing is written to disk by default. The README describes a default save into the input folder, but the shipped code only writes when save_path is set - leave it blank (the default) and no file lands at all, you just get the tensor. If you want the loaded image available to a πŸ–ΌοΈ Load Image node later, put a path in.

    No timeout on the request. A host that accepts the connection and then stalls will hold your queue with no progress and no error until it gives up. Same for a URL that returns a 404 - a non-200 status returns None for all three outputs.

    Transparency is discarded. The node converts to RGB, and the README states it plainly: no alpha support. A transparent PNG comes in flattened, and if you need that alpha as a mask you're better off saving the file and loading it with a loader node that outputs the alpha channel.

    Install

    ComfyUI Manager β†’ search ComfyUI-mnemic-nodes, or from the command line:

    cd ComfyUI/custom_nodes
    git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes
    

    Restart ComfyUI afterwards. Nothing to download for this node - requests is the only dependency it cares about, and that's already in the pack's requirements (along with a pile of others you may not need: transformers, opencv-python, tiktoken, imageio, piexif).

    One caution if your ComfyUI is exposed beyond your own machine: this node fetches arbitrary URLs server-side, so don't wire it to an endpoint you don't control. Same rule as any API node - it's fetching on your behalf, from your network.

    Category⚑ MNeMiC Nodes

    Inputs (3)

    NameTypeDefaultDescription
    image_urlSTRINGURL of the image to download.
    save_file_name_overrideoptSTRINGOptional override for the name of the saved image file.
    save_pathoptSTRINGOptional path to save the image. Defaults to the current directory.

    Outputs (3)

    NameTypeDescription
    imageIMAGEThe downloaded image
    widthINTThe width of the image
    heightINTThe height of the image