ComfyUI Node

Smart Collage Maker

Collages with actual layouts, not just a pile of rectangles

By Niutonian·Created 9 months ago·Updated 9 months ago· 0
Smart Collage Maker
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • image_9
  • collage_image
◄layout_stylemagazine►
◄canvas_width1024►
◄canvas_height1024►
◄size_variationmedium►
◄rotation_enabledfalse►
◄max_rotation15►
◄overlap_allowedfalse►
◄background_colorwhite►
◄border_stylenone►
◄spacing10►
◄seed42►

Most "collage" tools in ComfyUI are grids wearing a different name - equal cells, equal sizes, boring. Smart Collage Maker actually tries to compose: it takes up to nine IMAGEs and arranges them on a canvas with varied sizes, optional rotation, and layouts that include magazine spreads and spirals. It's the artistic one in the Niutonian Smart Image Suite, and the one where you set a seed and let it do the arranging.

Pure Pillow, no models, no API - but unlike the pack's stitch nodes, this one has a real random component, so it earns its "smart."

How it works

layout_style is the star. magazine does a structured, grid-like editorial layout. scattered throws images around with rotation and overlap for a freeform mood-board look. spiral arranges them along a spiral curve - that one reads as genuinely different from a grid. photo_wall and mosaic are in the list too, but be honest with yourself: as of the current release the code routes photo_wall, mosaic, and custom to the same scattered algorithm, so those three are effectively the same layout today. magazine, scattered, and spiral are the real choices.

You control the canvas with canvas_width / canvas_height (512–4096, step 64). size_variation (none, small, medium, large, random) jitters the image sizes so the composition doesn't look assembly-line. rotation_enabled plus max_rotation (0–45°) adds tilt, and overlap_allowed lets images overlap instead of shoving apart. border_style (none, thin, thick, shadow) gives the pieces a bit of presence, spacing controls the gap in structured layouts, and background_color offers white, black, transparent, or random. The seed input drives the arrangement, so you can lock in a composition and re-roll it by bumping the seed.

Output is collage_image (IMAGE) - a single canvas at your requested resolution, ready for a Save Image. For mood boards, character reference sheets, or a "these nine images are one vibe" post, it does in one node what would otherwise be an hour of manual compositing.

Inputs that matter

  • layout_style - magazine, scattered, or spiral (the three that are actually distinct).
  • canvas_width / canvas_height - pick these first; everything else scales around them.
  • size_variation and rotation_enabled - the difference between "grid with gaps" and "collage."
  • seed - reroll the arrangement when a composition isn't working.

Installing

cd ComfyUI/custom_nodes
git clone https://github.com/Niutonian/comfyui-niutonian-smart-image

Restart and find it under Niutonian/Image Processing. No extra dependencies beyond Pillow - no model downloads anywhere in the pack.

Fair warning: it's a brand-new implementation (the suite's initial commit is from early 2026), so layout algorithms are simple and the non-overlap placement can leave the canvas a little airy with few images. Feed it a full nine images and it behaves. And remember the photo_wall/mosaic alias caveat - if a future update implements them properly, this article will be the one that told you they weren't there yet.

CategoryNiutonian/Image Processing

Inputs (20)

NameTypeDefaultDescription
layout_styleCOMBOmagazine6 options: magazine, photo_wall, mosaic, scattered, spiral, custom
canvas_widthINT1024512–4096—
canvas_heightINT1024512–4096—
size_variationCOMBOmedium5 options: none, small, medium, large, random
rotation_enabledBOOLEANfalse—
max_rotationINT150–45—
overlap_allowedBOOLEANfalse—
background_colorCOMBOwhite4 options: white, black, transparent, random
border_styleCOMBOnone4 options: none, thin, thick, shadow
spacingINT100–50—
seedoptINT420–999999—
image_1optIMAGE—
image_2optIMAGE—
image_3optIMAGE—
image_4optIMAGE—
image_5optIMAGE—
image_6optIMAGE—
image_7optIMAGE—
image_8optIMAGE—
image_9optIMAGE—

Outputs (1)

NameTypeDescription
collage_imageIMAGE—