ComfyUI Node

Topaz Resolution

Named output sizes with snapping — the little node that feeds half your graph

By donangel85·Created 2 days ago·Updated 2 days ago· 0
Topaz Resolution
    • width
    • height
    • info
    presetFull HD 1080p (1920x1080)
    orientationlandscape
    divisible_by1
    roundingup
    custom_width1920
    custom_height1080
    custom_divisor0

    Most dimension problems in ComfyUI are just typing problems: you want a specific output size, you need both edges to be a multiple of something, and you're going to fat-finger 1920x1088 for the third time today. Topaz Resolution exists so you don't type those numbers. Pick a named size, an orientation, and a divisibility constraint, and it hands you back two plain INTs plus a description string. Because they're plain INTs - not some pack-private type - the same node can drive the Topaz upscale nodes' target_width/target_height and a latent model's empty-image size, a MiniMax-H3 resolution, or anything else that takes dimensions. It earns its keep fast in video graphs where a bunch of nodes all need to agree on one size.

    Inputs

    • preset - the named sizes. Watch the two that both get called "2K" in the wild: QHD 1440p is 2560x1440, DCI 2K is 2048x1080. They're named explicitly precisely because "2K" alone is ambiguous. custom switches to the custom_width/custom_height fields.
    • orientation - landscape (default), portrait (swaps width and height), or square (takes the shorter edge, so 1080p becomes 1080x1080).
    • divisible_by - snap both edges to a multiple of this. 1 means no constraint. This exists because many latent video models only accept dimensions their encoder can downsample cleanly: MiniMax-H3 wants multiples of 32, which is why Full HD there is 1920x1088, not 1920x1080.
    • rounding - which way to move when a size doesn't divide evenly: up never returns less than you asked for, down never returns more, nearest keeps the smallest difference. up is the default and usually the right one.

    Optional extras: custom_width/custom_height for the custom preset (still snapped to divisible_by), and custom_divisor - an override for divisible_by when it's above 0, for the rare model whose constraint isn't a power of two (the dropdown only goes up in powers of two: 1, 2, 4, 8, 16, 32, 64, 128).

    Outputs

    width (INT), height (INT), and info (STRING - a human-readable summary of what was resolved, handy to feed a text node or just glance at). Wire width into a target node's width input and height into its height input; the snapping happens after orientation, so portrait sizes satisfy the divisibility constraint too.

    Install

    It ships in the one pack:

    git clone https://github.com/donangel85/ComfyUI-TopazVideoLocal.git
    

    from ComfyUI's custom_nodes folder, restart ComfyUI. No pip step beyond numpy; ComfyUI Manager finds it under "TopazVideoLocal". Unusually for this pack, this node doesn't even need a Topaz installation to function - it's pure arithmetic over plain INTs. The rest of the pack still wants Windows and a licensed, signed-in Topaz Video install.

    Common issues

    The easy mistakes are all about expectations, not errors. If your custom size comes back slightly larger than you typed, that's divisible_by snapping up - pick down or nearest if the exact value matters more than the constraint. If you set a preset to Full HD and a downstream model errors anyway, check whether it's the 1080-vs-1088 divisibility issue: for anything that needs multiples of 32, Full HD from this node's divisible_by: 32 is 1920x1088, and that's correct, not a bug.

    CategoryTopaz Video Local

    Inputs (7)

    NameTypeDefaultDescription
    presetCOMBOFull HD 1080p (1920x1080)Named output size. 'custom' uses the width and height below. Note the two entries that both get called 2K: QHD is 2560x1440, DCI 2K is 2048x1080.
    orientationCOMBOlandscapeportrait swaps width and height. square takes the shorter edge, so 1080p becomes 1080x1080.
    divisible_byCOMBO1Force both edges to a multiple of this. Many video models require it — MiniMax-H3 needs 32, which turns 1920x1080 into 1920x1088. 1 means no constraint.
    roundingCOMBOupWhich way to move a size that does not divide evenly. up never returns less than you asked for; down never returns more; nearest keeps the smallest difference.
    custom_widthoptINT192016–16384Used only when preset is 'custom'. Still snapped to divisible_by.
    custom_heightoptINT108016–16384Used only when preset is 'custom'. Still snapped to divisible_by.
    custom_divisoroptINT00–256Overrides divisible_by when above 0, for the rare model whose constraint is not a power of two.

    Outputs (3)

    NameTypeDescription
    widthINT
    heightINT
    infoSTRING