Turns four scanned Nimslo 3D half-frames into an aligned, looping wigglegram: a still photograph that appears to move, because the four lenses saw the scene from four slightly different positions and your eye reads that parallax as depth.
The four half-frames it was made from, exactly as the lab scanned them:
From time to time I shoot with my Nimslo 3D, and my old workflow - stacking the four frames in Photoshop and lining them up by hand - was a grind. I got rid of Photoshop and decided to try solving it properly, experimenting with Claude to see how far I could get.
macOS, no command line: double-click Nimslo.command. On first run it sets
itself up (a few minutes, once), then asks you to pick a folder of scans and opens
in your browser. Leave the Terminal window it opens alone while you work — that
window is the tool. Closing it stops it.
If macOS refuses to open it, right-click → Open the first time, or run
chmod +x Nimslo.command.
Everything else:
python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/nimslo serve ~/Pictures/roll-01
Needs Python 3.11 or newer.
MP4 export additionally needs ffmpeg on your PATH (brew install ffmpeg).
Everything else works without it, and the tool tells you so rather than
failing at the end.
- Point it at a folder of scans. It works out how many half-frames each file holds and finds the cuts between them. For scans with a single cut, that cut is a draggable line if the automatic guess is off.
- Set the frame order by dragging the thumbnails. Film order doesn't reliably match lens order, and getting it wrong is the most common reason a wigglegram looks wrong.
- Click the thing you want to stay still. That point stays locked while everything nearer and further sweeps around it. Skip it and it anchors the middle distance automatically.
- Adjust with live preview: speed and crop, plus rotation.
- Export as animated WebP, MP4, or GIF.
Your settings save to a .nimslo.json beside your scans, so reopening the folder
restores your work, and a whole roll can be re-exported unattended:
.venv/bin/nimslo batch ~/Pictures/roll-01 -o ~/Pictures/wigglegrams
assets/ example images used by this README.
nimslo/ the Python tool: ingest, align, crop, luminance, export, CLI, server
tools/ fixture generator, OpenCV.js capability probe
tests/ Python test suite
tests-web/ golden-data harness for the port
MIT — see LICENSE.

