External Image Alpha (ComfyUI Deploy)
External Image, but the alpha channel survives the trip
- default_value
- image
Look at the regular External Image node and you'll see it forces every image to RGB, quietly discarding alpha. That's fine for most img2img use, and it's a silent disaster for the workflows that actually need transparency - cutout compositing, sprite extraction, anything where a caller uploads a PNG with a meaningful fourth channel. "External Image Alpha" is the variant that doesn't flatten it: it decodes the image and keeps all four channels, so the alpha survives into the tensor.
It's a niche sibling of the workhorse External Image, and it exists for exactly one reason - those workflows. If you're building a deployed pipeline where callers upload transparent PNGs (product shots with clean cutouts, sticker art, layered composites), this is the input node you want. Same shape as its sibling, one meaningful difference: no .convert("RGB") anywhere in the path.
How it works
The mechanism mirrors External Image: if input_id starts with http it fetches the image; if it's a base64 data URI (data:image/png;base64, and friends) it decodes it. It EXIF-transposes, normalizes to 0–1 floats, and returns a tensor - but it skips the RGB conversion, so an RGBA PNG arrives as a 4-channel tensor with the alpha intact. No URL supplied (or a malformed one) means it returns whatever default_value is wired in.
Inputs and output
input_id- defaultinput_image. The key callers use; also the URL/base64 source.default_value- an IMAGE fallback for when no valid source arrives.- Optional:
display_name,description.
Output: image (IMAGE) - potentially 4-channel.
Installing it
Same 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.
Where people get burned
Here's the trade-off nobody warns you about: a 4-channel IMAGE tensor is not what most nodes expect. Standard ComfyUI image processing assumes 3 channels, so the moment your alpha-carrying tensor hits a node that isn't alpha-aware, you get a shape error or a baffling corruption. The fix is to split the alpha off deliberately - a mask/alpha extraction node reads the 4th channel and hands it to compositing or masking - and only then feed RGB onward. Don't just run an RGBA tensor into a random pipeline node and hope.
Second, this node is stricter than it looks: it only accepts http URLs or base64 data URIs, and anything else raises a ValueError that lands you in the fallback path. A plain local file path won't work here the way it might in other input nodes. And same as its sibling, a failed load returns the default silently - check the console when callers complain their image "didn't come through."
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| input_id | STRING | input_image | — |
| default_valueopt | IMAGE | — | |
| display_nameopt | STRING | — | |
| descriptionopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |