Nodes/Anima Resolutions/Anima Image Scale By Multiple
ComfyUI Node

Anima Image Scale By Multiple

Scale to 1.5x and stay on Anima's grid — that's the whole trick

By cyberdeliaAI·Created 3 months ago·Updated about a month ago· 2
Anima Image Scale By Multiple
  • image
  • image
  • width
  • height
  • applied_scale
scale_by1.50
upscale_methodlanczos
multiple32
max_long_edge0

Two-pass Anima workflows live or die on one detail: the second-pass size has to stay on a grid the model's latents actually like. A first pass at 1024x1536 scaled 1.5x lands on 1536x2304 - fine. But 1280x1280 at 1.5x lands on 1920x1920, also fine. Not every combo lands that cleanly, and the moment your 1.5x math gives you a dimension that isn't a multiple of 8, you're asking the VAE to do something it's not happy doing. Anima Image Scale By Multiple scales the image and snaps both dimensions to a multiple of 8, 16, 32, or 64 in one step. That's the whole job, and it's a genuinely useful one.

How it works

It takes an IMAGE plus a few settings and returns the resized tensor:

  • scale_by - the factor, default 1.5 (range 0.1–8). The 1.5x figure matches the README's recommended workflow: a 1024x1536 first pass becomes a 1536x2304 second pass.
  • upscale_method - nearest-exact, bilinear, area, bicubic, or lanczos. Lanczos is the default, and it's what you want for upscaling; switch to area when you're scaling down.
  • multiple - 8, 16, 32, or 64, default 32, matching the rest of the pack's grid philosophy.
  • max_long_edge - 0 means no cap. Set it to something like 2048 and the node scales down to fit within that longest edge before snapping.

The resample itself runs through ComfyUI's native common_upscale (the "true Lanczos" the README brags about), and the result is clamped to a valid image range. Snapping uses rounding, not floor, so the output can land a hair under your target as easily as over it.

Four outputs come out: the resized image, the final width and height as integers, and - the one people miss - applied_scale, a float reporting the actual average scale that was applied. That last one matters because it won't exactly equal scale_by. Snapping moves things, so if you ask for 1.5x and the snap pushes you to 1.49x, applied_scale tells you the truth. Read it when you're wiring the next stage of the workflow, not the number you typed in.

What it isn't

It is not an AI upscaler. Don't feed it a soft 1024px image expecting it to invent new detail - it's a geometric resize that keeps you on-grid. For Anima's soft default output, the actual detail fix people use is a latent upscale around 1.25x with denoise 0.25–0.35 between two KSamplers, or a proper model-based upscaler if you want to go big. This node is the honest glue: it makes sure whatever scale pass you run ends up at a dimension Anima's pipeline is happy to chew on.

Installation and troubleshooting

Same pack, same story - no models, no dependencies (dependencies = [] in pyproject.toml). ComfyUI Manager: search "Anima Resolutions", install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/cyberdeliaAI/ComfyUI-anima-Resolutions.git

Troubleshooting is mostly about expectations. If applied_scale disagrees with scale_by, that's the snap working, not a bug. If you're scaling down and using lanczos, switch to area - Lanczos downsampling rings and aliases. And don't push past a single scale pass: Anima artifacts if you chain multiple upscale stages, and this node is best used once, as the deliberate step between first pass and final output.

CategoryAnima/Image

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
scale_byFLOAT1.500.1–8
upscale_methodCOMBOlanczos5 options: nearest-exact, bilinear, area, bicubic, lanczos
multipleCOMBO324 options: 8, 16, 32, 64
max_long_edgeINT00–16384

Outputs (4)

NameTypeDescription
imageIMAGE
widthINT
heightINT
applied_scaleFLOAT