Image Params Expand
Unpacking a tidy params wire
- _
- width
- height
- hires ratio
- batch size
- Megapixels
This node does one thing, and it does it without touching a single pixel: it takes the IParams packet made by the pack's Image Params node and splits it back into plain numbers. Width, height, hires ratio, batch size, megapixels - five individual sockets that wire into anything that wants integers and floats.
Why would you want that indirection? Because it's the tidy-pipe pattern. Instead of dragging base, ratio, and orientation widgets onto every node that needs dimensions, you set them once in Image Params, send one fat wire across the graph, and Image Params Expand splits it where you actually need the numbers. Your workflow stays readable, and when you change the aspect ratio you change it in exactly one place. It's the same philosophy that made rgthree's Context nodes and the "params" nodes in packs like Efficiency popular - one decision, one place, no spaghetti.
How it works
It's a pure unpacker. The packet is a plain Python tuple of five values - (width, height, hires, batch, megapixels) - created upstream by Image Params when it converts your base resolution and aspect ratio into a multiple-of-64 width/height pair. Expand just sanity-checks that it's a 5-tuple and hands it through. No math, no image processing, nothing to go wrong beyond feeding it the wrong thing.
Inputs and outputs that matter
There's one input and five outputs, which is the whole story:
_(IParams) - the packet. Wire this only from the pack's Image Params node.width,height(INT) - the multiple-of-64 dimensions. Feed these to anEmptyLatentImageor a sampler's latent size.hires ratio(FLOAT) - the upscale multiplier you set on Image Params. Wire it into a second-pass sampler or an upscale node's scale factor.batch size(INT) - how many images to generate per run. Goes intoEmptyLatentImage's batch.Megapixels(FLOAT) - the base²/1,000,000 figure. Mostly useful as a sanity readout: "am I actually generating in the band my model wants?"
The pair shines in image-to-image and hi-res-fix workflows where you want a consistent resolution across passes. Generate at base, decode, and use the same width/height for the detail pass without retyping anything.
Installing it
This is a ComfyUI Fictiverse Nodes pack node, so you're installing the whole pack:
- ComfyUI Manager → search ComfyUI Fictiverse Nodes → Install, then restart.
- Or manually:
cd ComfyUI/custom_nodes && git clone https://github.com/Fictiverse/ComfyUI_Fictiverseand restart ComfyUI.
The pack has zero Python dependencies beyond what ComfyUI already ships - no model downloads, no heavy installs. It's a small, single-author utility pack.
Common issues
The one real trap: feeding Expand something that isn't an IParams packet. The node raises a TypeError ("Invalid packet input type") or a ValueError about packet length if you do. That's it being honest - a width is a width only if it came from the matching packer. Keep Image Params and Image Params Expand as a pair and you'll never see it.
Also worth knowing: this pack shows up inside shared video/animate workflows on Reddit, and the most common failure there is people loading a workflow without having installed the pack at all - you get ModuleNotFoundError: No module named 'custom_nodes.ComfyUI_Fictiverse'. Install the pack, restart, done.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| _ | IParams | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |
| hires ratio | FLOAT | — |
| batch size | INT | — |
| Megapixels | FLOAT | — |