EXR Output (ComfyDeploy)
Save HDR EXR output from a deployed workflow — the export half of the HDR pair
- images
"EXR Output" is the sibling of the External EXR input node: where that one brings HDR data into a workflow, this one pushes it back out. It takes your IMAGE tensor and writes it to disk as a float32 .exr file, then reports it to the ComfyDeploy backend so the dashboard can hand it to your API caller. If your deployed workflow produces anything meant for compositing, grading, or a 3D pipeline - light maps, depth passes, anything where you need more than 8 bits per channel - this is the terminal node you finish it with.
Reaching for it makes sense only when the downstream consumer actually wants HDR. An EXR is useless in a normal image viewer and bloats a web gallery. But for a VFX studio pulling a rendered light pass off your API, it's exactly the format they want, and the dashboard uploads it the same way it uploads PNGs.
How it works
Under the hood it's a thin wrapper around OpenCV: the tensor is cast to float32, channels are flipped RGB→BGR (OpenCV's convention), and cv2.imwrite dumps it as an .exr. Because it's a save node, it returns no outputs - the "result" is the file plus a UI entry the ComfyDeploy uploader picks up, tagged with your output_id.
Note the default output folder behavior: files land in ComfyUI's standard output directory, and if you run through ComfyDeploy they get uploaded to your configured storage. The filename_prefix (default ComfyDeploy_EXR) supports the usual %date% and %node.field% templates, so you can keep exports organized.
What you set
images- the tensor to save as HDR.filename_prefix- defaultComfyDeploy_EXR.output_id- defaultoutput_exr. Distinct ids let callers tell your HDR pass apart from your PNG previews when both are returned by one workflow.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/BennyKok/comfyui-deploy.git
Restart ComfyUI, or install "ComfyUI Deploy" from ComfyUI Manager. EXR writing needs OpenCV, and opencv-python is in the pack's requirements.txt, so it's pip-installed on first load - a couple of minutes the first time, then nothing. No models, no key.
Where people get burned
The most common gotcha is a silent dependency gap: this node imports OpenCV with OPENCV_IO_ENABLE_OPENEXR=1 and hard-fails if it's missing. If you ever see it error on a stripped-down environment, make sure opencv-python (or opencv-python-headless) is actually installed - ComfyUI Manager normally handles this for the pack, but a hand-rolled venv can miss it.
Second: values above 1.0 are the whole point, so don't feed this node display-clamped PNG-range data and expect magic. If the image isn't already in a float HDR range (say, from a light-mapping node), the .exr you get back is just an overblown version of an 8-bit image. Also, EXRs don't preview in the ComfyUI UI or most browser dashboards - if you don't see a thumbnail, that's normal. Pair it with a PNG output node if you want a human-checkable preview alongside the HDR deliverable.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | ComfyDeploy_EXR | — |
| output_idopt | STRING | output_exr | — |
Outputs (0)
No outputs