Super Director Tools · Contact Sheet
Twenty Generations, One Image, One Glance
- images
- contact_sheet
A contact sheet is what photographers used to pin to the wall: every frame from a roll, small, numbered, side by side. In ComfyUI you need one for the same reason - you just generated sixteen variations and clicking through them one at a time in a Preview Image node is a miserable way to pick.
This node takes an IMAGE batch and lays it out in a numbered grid. Four settings, one output. It's the least glamorous node in the Super Director Tools pack and probably the one you'll end up keeping in your default workflow.
What it's for
Most ComfyUI workflows end at a save node or a preview, which is fine for one image and useless for a batch. If you're doing seed sweeps, prompt variants, or a dozen framed shots out of a panorama, you want a single visual summary you can eyeball and pick from.
ComfyUI's own Image Batch-style nodes and preview grids exist, but they tend to force square cells, which means a 16:9 image gets letterboxed into black bars and half your sheet is padding. This one sizes each cell to the image's aspect ratio instead. Since v0.8.1 that's explicit: thumbnails keep their proportions, and each one gets a separate 24 px band underneath for its label rather than having text stamped over the pixels.
Inputs and outputs
images is a float RGB IMAGE batch, 1–64 frames, all the same size. That's the whole constraint - it's a batch, so mixed sizes can't live in it. Three channels, no alpha; if you feed it masks you'll get an error rather than a surprise.
columns is 1–8 and defaults to 3. If you have fewer images than columns, it quietly reduces the column count rather than leaving a row of holes. thumb_size is the longest edge of each thumbnail, 64–512, default 256 - the short edge follows the image's ratio from there.
prefix and start_number are the numbering. prefix=SH, start_number=10 gives you SH010, SH011, SH012… Numbers pad to three digits and keep going normally past 999. Blank the prefix if you just want plain numbers.
The one output is contact_sheet, an IMAGE. Wire it to Preview Image to look at it, or Save Image to keep it as a shot list / review sheet for a client.
What you get, concretely
Take three 16:9 images at thumb_size=187 in two columns. Each thumbnail is 187×105, the sheet comes out 374×258 - no forced-square black bars, no cropping, no stretching. The last row's unused cells just keep the background colour, and the label band still runs under them, so the grid lines up instead of collapsing.
Labels are drawn with short ASCII text; anything non-ASCII renders as ? on the sheet. That's a preview-cost decision, not a bug - if your shot names are Chinese or emoji, the names survive in Batch Panorama's metadata_json and the image labels won't.
The gotcha
If you upgrade the pack and the sheet still shows big black borders around square cells, you're looking at a cached result, not the new node. Restart ComfyUI and run the workflow again - re-running without a restart won't refresh the render. The pack's own troubleshooting table calls this out, which tells you how often it happens.
Installing it
Manager → search Super Director Tools → install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/mch000534/ComfyUI-DirectorTools
Restart ComfyUI, refresh the browser tab, and the node appears under image/Super Director Tools. No models to download, no pip step - the pack ships a requirements.txt that says "No additional dependencies." This node in particular is pure Pillow plus tensor slicing; it costs nothing to have installed.
Where it slots in
Two obvious feeds. From Batch Panorama, where the built-in contact sheet is already labelled by Shot ID - reach for this node instead when you want your own numbering, or when you want a sheet of arbitrary images rather than camera shots. From Grid Split's all_cells, which turns a generated nine-grid into nine contact-sheet cells so you can see at a glance which panels the model actually nailed.
Both are the same idea: generation is cheap now, judging output is the bottleneck. Give yourself something to judge.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| columns | INT | 31–8 | — |
| thumb_size | INT | 25664–512 | Thumbnail longest edge. Cells follow image aspect ratio; labels have a separate 24 px band. |
| prefix | STRING | SH | Label prefix, for example SH or Shot_. Leave blank for numbers only. |
| start_number | INT | 10–999999999 | First image number. Sequential numbering, padded to at least three digits. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| contact_sheet | IMAGE | — |