transform-build-mosaic-collage-with-transloadit

Installation
SKILL.md

Inputs

  • Two or more absolute paths to local input images
  • Optional output path; default to an explicit collage.jpg in the current working directory
  • Optional canvas size (--width, --height), default 1920×1200
  • Optional --seed for deterministic layout

Prepare Instructions

Resolve credentials in this order:

  • Shell environment variables
  • The current working directory .env only
  • ~/.transloadit/credentials

If your .env lives in a parent directory, export the variables into the shell first.

Run

npx -y @transloadit/node image merge \
  --input ./photo-a.jpg \
  --input ./photo-b.jpg \
  --input ./photo-c.jpg \
  --input ./photo-d.jpg \
  --input ./photo-e.jpg \
  --input ./photo-f.jpg \
  --effect mosaic \
  --width 1920 \
  --height 1200 \
  --border 12 \
  --shuffle \
  --format jpg \
  --output ./collage.jpg

After the command finishes, confirm the image exists at the expected output path.

Tuning

  • --border 12 sets both the outer canvas padding and the gutter width between tiles. Larger values give more breathing room.
  • --background '#eee5d3' fills the gutters and canvas padding (default). Hex codes or named colors both work.
  • --background none (with --format png or --format webp) produces a transparent canvas and transparent gutters.
  • --shuffle lets the Robot reorder inputs before solving the layout; combine with --seed to pin the shuffle.
  • --seed 42 makes the mosaic solver deterministic — rerun with the same inputs to reproduce the same output.

Debug If It Fails

npx -y @transloadit/node assemblies get <assemblyIdOrUrl> -j

Notes:

  • Repeated --input values are bundled into a single /image/merge assembly.
  • The mosaic effect reads each input's aspect ratio and solves for a justified tile layout — portrait + landscape mixes generally produce more interesting layouts than uniform sizes.
  • Unlike the polaroid-stack effect, tiles are center-cropped to fit their allocated rectangle. Any portion of a photo can be cropped off — if every pixel matters, resize beforehand with /image/resize and resize_strategy: fit.
  • Prefer an explicit output filename (e.g. ./collage.jpg or ./collage.png) over a directory output so the extension is deterministic.
Related skills
Installs
13
GitHub Stars
2
First Seen
Apr 18, 2026