Nodes/Orion4D_MetaNode/πŸ–ΌοΈ Curves Pro Image
ComfyUI Node

πŸ–ΌοΈ Curves Pro Image

Load an Image, Apply a Curve, Compare Before and After

By orion4dΒ·Created 5 months agoΒ·Updated 5 months agoΒ· 5
πŸ–ΌοΈ Curves Pro Image
  • mask
  • image
  • mask
  • log
β—„imageβ–Ύβ–Ί
β—„curves_jsonβ€”β–Ί

The πŸ“ˆ Curves Pro editor gives you the curve; πŸ–ΌοΈ Curves Pro Image is where you load the actual image and watch it get graded. It's the receiver half of the pack's curves pair - a Load Image node that applies a curves_json in real time, with a two-tab UI (Original / Modified) so you can flip between the two.

How it works. image is the input, and it behaves like ComfyUI's native Load Image - it's a file picker with an upload option, not a wire. You feed it the picture you want graded. Then curves_json (a STRING input, meant to be wired, from the Curves Pro editor) carries the curve data; the optional mask input lets you restrict the grading to part of the image. When both nodes are connected, the source image is pushed to the editor over WebSocket for the live histogram and preview, and the graded result comes back here.

Outputs. image - the graded result, ready to wire into a preview or save node. mask - the mask, passed through. log (STRING) - a status line for what was applied. So you can build the full loop: Curves Pro (editor, with your image feeding its histogram) β†’ wire curves_json to Curves Pro Image β†’ out the other side is the finished, graded image.

The timing detail. This node's IS_CHANGED method hashes the actual image file and the curves_json on every execution. That's a deliberate "always re-run" style behavior, and it's why the preview updates when you drag the curve: the receiver re-executes whenever the curve data changes, which is what makes the editor feel live instead of "render and then look."

Where people get burned: the image input is a file picker, not a wire, so you can't feed it the output of an earlier node directly - if you need to grade an image that isn't on disk, use the editor's standalone image output path instead of this node. And the mask is optional but behaves like any optional input: unwired means "grade everything," not "grade nothing."

Install. ComfyUI Manager β†’ search "Orion4D_MetaNode", or:

cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/Orion4D_MetaNode

Restart ComfyUI; category Orion4D_MetaNode/ColorGrading. No extra dependencies.

The honest workflow is: editor + receiver wired together, a real image in, and you're doing curves the way you would in Lightroom - except it's a node in a diffusion pipeline and the result feeds straight back into your workflow.

CategoryOrion4D_MetaNode/ColorGrading

Inputs (3)

NameTypeDefaultDescription
imageCOMBO1 options: example.png
curves_jsonoptSTRINGβ€”
maskoptMASKβ€”

Outputs (3)

NameTypeDescription
imageIMAGEβ€”
maskMASKβ€”
logSTRINGβ€”