Studio Contact Sheet
Every frame in the batch, labeled and laid out
- images
- image
- contact_sheet_info
A batch of 40 renders is a wall of thumbnails until somebody labels them. MKRStudioContactSheet turns an IMAGE batch into a proper review board: a grid of cells, each with its index, aspect ratio, and resolution printed under it, all on a themed canvas with a header and footer. It's the "today's selects" sheet for people who review generations the way editors review dailies.
The mechanism is a simple, dependable layout: take the batch, arrange the images into columns worth of cells at a fixed cell_width, compute each cell's height from the image's own aspect ratio, and tile them top-to-bottom with gap_px spacing. Because cell height follows aspect ratio, mixed landscape/portrait batches still come out readable instead of letterboxed into a uniform grid.
The inputs that matter
- images - the batch. Anything that outputs a multi-frame IMAGE works: a KSampler batch, a batch collage, an image sequence.
- columns and cell_width - grid shape and cell size. 4 columns × 360px is a good default for review; more columns means smaller cells but more per page.
- label_prefix and start_index - cell labels read "SHOT 1", "SHOT 2"... with the defaults. Keep the prefix stable and the numbering matches your shot list.
- show_ratio / show_resolution - print "16:9 · 1024×576" under each cell. This is the quiet killer feature for delivery: the client can reference frames by number and you both know what you're looking at.
- theme, title, subtitle, badge - the board identity; default badge is "CONTACT SHEET".
- Optional selection_json - feed in a selection set's JSON and the sheet can reflect which frames got picked.
What comes out
image (the sheet) and contact_sheet_info (JSON describing every cell). The info string is the handoff - MKRStudioDeliveryPlan accepts it directly, so the delivery sheet can enumerate exactly what's on this board.
Installing it
Part of criskb/MKRShift_Nodes from Cris K B. ComfyUI Manager search "MKRShift_Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart. No pip requirements, no models.
The honest caveats
Big batches make big boards - 40 frames at 360px wide and 4 columns is a tall image, so either lower cell_width or accept a long scroll. And because it lays out by index, the sheet's story is only as good as your batch order: sort upstream before you sheet, or your "hero" lands in cell 27. It's the batch counterpart to MKRStudioCompareBoard's two-up; for a full batch review this is the one you want.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| title | STRING | Daily Selects | — |
| subtitle | STRING | Batch review board | — |
| theme | COMBO | Carbon | 4 options: Carbon, Paper, Signal, Blueprint |
| badge | STRING | CONTACT SHEET | — |
| columns | INT | 41–8 | — |
| cell_width | INT | 36080–2048 | — |
| gap_px | INT | 240–128 | — |
| margin_px | INT | 408–256 | — |
| header_px | INT | 11248–320 | — |
| footer_px | INT | 5624–160 | — |
| label_prefix | STRING | SHOT | — |
| start_index | INT | 10–9999 | — |
| show_ratio | BOOLEAN | true | — |
| show_resolution | BOOLEAN | true | — |
| delivery_plan_jsonopt | STRING | — | |
| selection_jsonopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| contact_sheet_info | STRING | — |