Nodes/ComfyUI Deploy/External Image (ComfyUI Deploy)
ComfyUI Node

External Image (ComfyUI Deploy)

The img2img input that eats URLs and base64 — the workhorse of deployed workflows

By BennyKok·Created 3 years ago·Updated 9 months ago· 1,529
External Image (ComfyUI Deploy)
  • default_value
  • image
â—„input_idinput_imageâ–º
â—„display_nameâ–º
â—„descriptionâ–º
â—„default_value_urlâ–º

This is the one you'll reach for in almost every deployed workflow: "External Image" is the input node that lets your API callers hand you a source image. It accepts an image URL or a base64 data URI, decodes it, and returns a standard IMAGE tensor ready for img2img, inpainting, ControlNet, or anything else that wants a picture. It's the deployed-workflow equivalent of ComfyUI's LoadImage - except the file comes from a caller, not from your input folder.

If you've seen any ComfyDeploy workflow tutorial, you've seen this node. It's the input_image that sits at the start of every image-in/image-out API, and it's the template the whole External family is built around. Understanding it means understanding the pattern: the caller's image arrives through the node's input_id, and the node does the dirty work of turning bytes into a tensor.

How it works

It tries a small list of sources in order: input_id (which the backend populates with the caller's value), then default_value_url. For each, if it starts with http it fetches the image; if it starts with data:image/png;base64, (or jpeg/jpg), it base64-decodes it. Then it transposes EXIF orientation, forces RGB, normalizes to 0–1 floats, and returns a batch-of-one tensor. If everything fails, it falls back to the wired-in default_value instead of erroring - the same lenient pattern as the rest of the pack.

Inputs and output

  • input_id - default input_image. The key callers use to send the image; it's also tried as a URL source.
  • default_value - an IMAGE to use when no URL is supplied.
  • default_value_url - a second URL slot, handy for testing locally with a fixed image.
  • Optional: display_name, description - what the dashboard shows for this input.

Output: image (IMAGE), straight into your VAE encode / img2img chain.

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/BennyKok/comfyui-deploy.git

Restart ComfyUI, or install "ComfyUI Deploy" via ComfyUI Manager. No models, no key, no extra deps.

Where people get burned

The RGB forcing is the quiet detail: the node calls .convert("RGB"), which drops any alpha channel. A PNG with transparency comes in flattened against black - invisible until you look at a composited result. If your workflow needs the alpha, use the External Image Alpha node instead; it's a sibling in the same pack that keeps the fourth channel.

Second gotcha: the lenient fallback. Bad URL, expired signed link, wrong base64 - you get the default image and the run "succeeds," which is exactly how a caller's wrong input becomes a subtly wrong result instead of a clear error. When debugging a deployed workflow that returns baffling images, suspect this node first and check the console for fetch failures. And keep your public endpoints tight: this node will happily pull any URL you point it at, so gate who can actually invoke your deployment.

Category🔗ComfyDeploy

Inputs (5)

NameTypeDefaultDescription
input_idSTRINGinput_image—
default_valueoptIMAGE—
display_nameoptSTRING—
descriptionoptSTRING—
default_value_urloptSTRING—

Outputs (1)

NameTypeDescription
imageIMAGE—