Nodes/comfyui-apex-artist/Apex Smart Resize
ComfyUI Node

Apex Smart Resize

The node your old workflow wants, and the pack quietly deleted

By ApexArtist·Created 12 months ago·Updated 2 months ago· 4
Apex Smart Resize
  • image
  • image
  • width
  • height
  • scale_factor
  • resolution_info
  • console_log
resolution_setStandard
snap_methodkeep_proportion
resize_modecrop_center
interpolationlanczos
show_candidatesfalse
enforce_divisibility64

Here's the first thing you need to know about Apex Smart Resize, and it's not in any marketing: the node no longer ships with its own pack. ApexArtist removed it in v2.0.2 as "redundant functionality," so if you install the current version of comfyui-apex-artist you get the LoRA loader, the blur, the sharpen, the layer blend - but no Smart Resize. The README still documented it for a while after that (readmes rot, that's the whole story), which is exactly why you're here staring at a node that doesn't exist in the code.

So before anything else: if a workflow you downloaded won't load because of a missing ApexSmartResize, that's not you breaking something. That's the pack dropping the node out from under older saved graphs. Downgrade the pack to before v2.0.2 if you must keep it, or just swap in the replacement below - it takes about a minute.

What it actually did

When it existed, it was a "smart" image resizer for the boring-but-important job of feeding a diffusion model an image at a resolution that model won't barf on. Every architecture has a native resolution it was trained at; going off it produces stretched bodies, doubled anatomy, repeating patterns. SDXL wants one of its trained aspect buckets (1024×1024, 1152×896, 1216×832, 1344×768, 1536×640 and rotations); Flux wants multiples of 64; the 2026 crop - Z-Image, QwenEdit, Krea2, Ideogram4, FLUX.2, SD3.5 - wants a 1–2MP band and degrades softly outside it. Apex Smart Resize wrapped that knowledge into a dropdown: pick a preset, and it snapped your image to the closest candidate in that preset's resolution table.

The mechanism, from the source that shipped up to v1.8.0: each resolution_set is a hardcoded list of (w, h) candidates. snap_method decides how to pick one. keep_proportion (the default) scales the largest side up to a candidate of the same orientation and keeps your aspect ratio; closest_area, closest_ratio, prefer_larger, and prefer_smaller score every candidate by area or aspect difference and take the winner. Then enforce_divisibility (optional, default 64) rounds the target to a clean multiple - 8 for VAE, 16 for ControlNet, 32 for upscalers, 64 for max compatibility, per the author's own tooltip. Finally resize_mode decides how to fill the frame: crop_center, stretch, or fit-with-padding in black, white, or edge-extended.

The inputs and outputs that matter

You'd set basically three things:

  • resolution_set - which model you're about to generate with. Standard and Extended are the SDXL buckets; the rest are per-model (ZImage, QwenEdit, Krea2, Ideogram4, FLUX.2, SD3.5). This is the "smart" part: you don't type 1216×832, you pick "SDXL."
  • snap_method - leave it on keep_proportion unless your aspect ratio matters more than your megapixel count.
  • enforce_divisibility - default 64 is fine for Flux; drop it to 8 if a ControlNet is screaming about dimensions.

It outputs image, plus width, height, and scale_factor as INT/FLOAT you can wire into other nodes, and a resolution_info string describing what it picked. Handy when a workflow needs the final size downstream.

Installing it (and the honest fix)

If you still want the pack, it's the standard two-step:

cd ComfyUI/custom_nodes
git clone https://github.com/ApexArtist/apex-artist-comfyui

…then restart ComfyUI, or search "comfyui-apex-artist" in ComfyUI Manager. No extra pip dependencies - the requirements file is deliberately empty, everything rides on torch/Pillow that ComfyUI already ships. But again: current HEAD has no Smart Resize. The honest fix is to not need it. ComfyUI's core ImageScale (with lanczos) plus the resolution table from the model's docs does the same job - pick the trained bucket by hand, or use a latent-scale node after VAE encode. Since the author themselves called it redundant, the community consensus is: they were right, and the core nodes were always the fallback.

Where people get burned

The classic gotcha is the one you're already in: an old workflow loads, the node is missing, and every suggestion online assumes you can just reinstall it. You can't - not at current versions. The other trap is expecting it to upscale. It doesn't add detail; it snaps resolution. If you want bigger-with-more-detail, that's an upscaler (ESRGAN or a generative pass), a different job entirely. This node was for the "before sampling" step, not the "after" one.

CategoryApex Artist/Image

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
resolution_setCOMBOStandard12 options: Standard, Extended, Flux, Portrait, Landscape, Square, +6
snap_methodCOMBOkeep_proportion5 options: keep_proportion, closest_area, closest_ratio, prefer_larger, prefer_smaller
resize_modeCOMBOcrop_center5 options: crop_center, stretch, fit_pad_black, fit_pad_white, fit_pad_edge
interpolationCOMBOlanczos4 options: lanczos, bicubic, bilinear, nearest
show_candidatesBOOLEANfalseShow resolution candidates in console
enforce_divisibilityoptINT648–128Ensure dimensions are divisible by this number (8=VAE, 16=ControlNet, 32=upscalers, 64=max compatibility)

Outputs (6)

NameTypeDescription
imageIMAGE
widthINT
heightINT
scale_factorFLOAT
resolution_infoSTRING
console_logSTRING