Scaler | Sides Unlinked
The stretchy resize rule — and where it bites
- scaler
Scaler | Sides Unlinked is the pack's one resize rule that can warp your image, and that's not a bug - it's the entire feature. Where its sibling Scaler | Side multiplies both dimensions by a single factor, this one gives width and height each their own multiplier. Same rule applies as with every scaler in wmpmiles/comfyui-some-image-processing-stuff: the node doesn't resize anything itself, it emits a sizing recipe (a SCALER value) that you feed into Resample Image, Resample Mask, or Resample Latent - or Mask-Crop Inpaint | Pre - alongside a resampler that picks the interpolation method.
Why you'd actually use it
Anything non-uniform, you use this. The classic case is aspect-ratio correction: you've got a 1024x576 render and want a squarer 1024x768-ish result for a specific canvas or print - bump height_multiplier to ~1.33 and leave width at 1.0. Same trick fixes a letterboxed or oversized dimension without knowing the exact target pixel count; the multiplier is self-relativizing to whatever the input happens to be. It's also handy for stretching latents into a training-friendly shape before a Resample Latent, or nudging an inpainting crop's bounding box toward a resolution your model likes.
The honest warning up front: a multiplier other than 1.0 on one side is a stretch, and a stretch is distortion. Faces squish, circles become ovals, text blurs in one axis. If you just want a bigger or smaller image with the aspect preserved, you want Scaler | Side (or Scaler | Area / Megapixels for area-based math) - not this node. Reach for Sides Unlinked when you deliberately want to change shape, not accidentally.
What you actually set
width_multiplier(FLOAT, default1.0, min0.001, step0.001) - multiplies the horizontal size only.height_multiplier(FLOAT, default1.0, min0.001, step0.001) - multiplies the vertical size only.
The output is one scaler value (type SCALER) feeding the scaler socket of a Resample node. Pair it with a resampler - Lanczos if you're upscaling and want it to look decent, nearest-neighbor if you're preserving hard edges.
One fine-print detail worth knowing if you're precise: unlike Scaler | Side, whose source rounds the scaled size to whole pixels, this node's source multiplies straight through without rounding. Feed it 1.5 and a 512-pixel side becomes 768.0 as a float; the resampler then silently truncates toward an integer size. Harmless at whole multipliers, mildly surprising if you're doing exact-math nerdery at 0.001 steps.
Install
Same as the rest of the pack. Via ComfyUI Manager, search for "Some Image Processing Stuff" - it's in the Comfy Registry. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/wmpmiles/comfyui-some-image-processing-stuff
Restart ComfyUI. No model downloads, no declared pip dependencies (torch plus a scipy import that ships with ComfyUI anyway) - it's a lightweight, source-readable pack, MIT-licensed.
Where people get burned
- The distortion trap, again. The most common mistake is grabbing this node for a plain upscale and wondering why everything looks like it was hit with a rolling pin. Check your multipliers: anything not 1.0 on exactly one axis is intentional squish.
- The scaler-only wiring error. It connects to this pack's
scalersockets only; wire it into an IMAGE input and you get a type mismatch. It must sit next to a Resample Image / Mask / Latent node. - Silent aspect drift in batches. If you bake a 1.1 width multiplier into a workflow, every downstream model-native resolution changes slightly. Fine deliberately; a slow, invisible creeping squish if you forget it's there.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| width_multiplier | FLOAT | 1.000 | — |
| height_multiplier | FLOAT | 1.000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| scaler | SCALER | — |