PS Auto Scaler (Hidden)
The invisible resize helper that keeps masks honest
- image
- mask
- IMAGE
- MASK
PS Auto Scaler (Hidden) is the pack's quiet workhorse, and the "(Hidden)" in its name is the honest part. You will rarely drag this node onto a canvas yourself - it's the kind of helper that exists to be injected into an API-exported workflow so the ComfyUI-PS-Connector pipeline can quietly keep images and masks in lockstep. When it appears in your graph, it's usually because a workflow you exported for the PS plugin needs everything resized to one target resolution before sampling, and this is what does it.
The mechanism is a resize pass and nothing more. The node takes a target width and height (both INT, default 512), an optional image (IMAGE), and an optional mask (MASK). Any image gets interpolated to the target size with bicubic resampling; any mask gets the same treatment. Then it returns the resized IMAGE and MASK as a matched pair.
Here's the part that keeps mask workflows from silently breaking: if either input is missing, the node fabricates a black tensor to fill the gap. No image in? You get a black IMAGE of the right size. No mask? A zeroed MASK. That means downstream nodes that expect both inputs always get both - no shape mismatches, no "NoneType" crashes mid-graph. If you're coming from the inpainting world, you know that mismatched mask and image resolutions are one of the classic silent failures; this node exists specifically so the PS plugin's auto-generated graphs don't hit it.
It's a plain utility, so the interface is short:
width/height(INT, default 512) - the resolution everything gets forced to.image(optional IMAGE) - resized to (height, width).mask(optional MASK) - resized to (height, width), same pass.- Outputs:
IMAGE,MASK, always both.
When would you actually place it by hand? Mostly you wouldn't - you'd encounter it inside a workflow that the PS plugin assembled or that you exported from the pack's examples. If you're building a graph that a Photoshop user will drive, the practical reading is: let the scaler own the size matching, and wire the width/height from whatever PS is controlling (that's where PS Get Image Size comes in). If you're building something standalone that doesn't involve Photoshop at all, you're better off with a dedicated resize node - this one's semantics are tuned for the pack's needs, not for general resizing chores.
Install is the same for every node in this pack: search "ComfyUI PS Connector" in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/doubley2000/ComfyUI-PS-Connector
then restart ComfyUI (and once more after the first boot, which auto-clones ComfyUI-Lora-Manager and copies example workflows). No extra Python packages - the pack declares zero dependencies, and this node uses only torch's F.interpolate, which is already in your ComfyUI environment.
Troubleshooting is mostly about expectations. If you hand-place it and get a black image out, check that you actually connected an image in - by design, an empty input doesn't error, it outputs zeros, which can look like a bug when it's really a wiring omission. And since it resizes unconditionally to whatever width/height you feed it, an unexpected target size is almost always coming from whatever's upstream of those two inputs, not from the scaler itself. It's a small node with a small job - but if you've ever watched a mask not line up with an image in an img2img pass, you'll appreciate why it exists.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 512 | — |
| height | INT | 512 | — |
| imageopt | IMAGE | — | |
| maskopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |