Nodes/Umbra Nodes/Image Upscale (Umbra UI)
ComfyUI Node

Image Upscale (Umbra UI)

A model upscaler that respects a maximum dimension — and never double-scales

By Nocturne-Ai-Labs·Created 2 months ago·Updated 10 days ago· 0
Image Upscale (Umbra UI)
  • image
  • image
  • width
  • height
  • upscale_model
upscale_model4x-AnimeSharp.pth
max_dimension3840
enabledfalse

Upscalers have a dirty secret the README owns up to: a 4x model will happily take your already-upscaled 2048px image and blow it to 8192px, eating VRAM and disk for nothing. Image Upscale (Umbra UI) exists to stop that. It runs a selected super-resolution model and then applies a true maximum-dimension cap - if the long edge is already past your limit, the output gets scaled down to fit, and it never re-enlarges a small model output a second time.

How it works

Two stages, both honest:

  1. The model pass. It loads your chosen upscale model and runs it (via ComfyUI's ImageUpscaleWithModel). The upscale_model dropdown is built from your ComfyUI/models/upscale_models/ folder, with 4x-AnimeSharp.pth given the default slot - that's an ESRGAN-family anime-tuned 4x model, the same lineage the KB's upscaling doc flags as the community workhorse for "more pixels" jobs.
  2. The cap. After the model runs, it computes the largest output dimension and, if that exceeds max_dimension (default 3840, min 512, max 16384), downscales with Lanczos to bring the long edge exactly to the limit, preserving aspect ratio. The result is never bigger than you asked for - the cap is a hard ceiling, applied after upscaling, not a soft suggestion.

There's also an enabled toggle (off by default). Flip it on and the upscale runs; leave it off and the node is a pass-through that just reports your input's width/height and "disabled" as the model name. That makes it a convenient single junction: the toggle controls whether the whole output pipeline upscales without you rewiring anything.

Outputs: image, width, height (the actual post-cap dimensions - handy to feed a save node or downstream sizing), and upscale_model (a string naming what ran, or "disabled").

The inputs a beginner sets

  • image - the tensor to upscale.
  • upscale_model - pick from your installed models; 4x-AnimeSharp.pth is the default.
  • max_dimension - your ceiling. 3840 fits a 4K long edge nicely; drop it to 2048 for fast local work.
  • enabled - the on/off switch.

Installing it

Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio (NocturneLabs' open-source local AI suite). ComfyUI Manager → search "Umbra Nodes", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Nocturne-Ai-Labs/Umbra-Nodes

Restart ComfyUI. No pip deps. You need an upscale model in ComfyUI/models/upscale_models/ for the model pass - the README's default profile expects 4x-AnimeSharp.pth, but any ESRGAN-family .pth in that folder shows up in the dropdown.

Gotchas

The ordering rule from the KB's detailing doc applies here in reverse: this is the last stage of a pipeline, after detailing. If you upscale first and detail after, the detail pass works on bigger pixels and costs more - detail at native resolution, then upscale. Second: the cap is a downscale, not a crop - if your source is a 16:9 and the model made it huge, the cap preserves aspect. And when enabled is off, width/height come straight from the input image, so if a downstream node "sees" the wrong size, check whether you forgot the toggle.

CategoryUmbra/UI

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
upscale_modelCOMBO4x-AnimeSharp.pth1 options: 4x-AnimeSharp.pth
max_dimensionINT3840512–16384
enabledoptBOOLEANfalse

Outputs (4)

NameTypeDescription
imageIMAGE
widthINT
heightINT
upscale_modelSTRING