The author describes accidentally creating wigglegrams (stereoscopic GIFs) by taking multiple similar photos, and wrote a script using perceptual hashing to automatically detect and stitch them together from their iCloud photo library.
# help i accidentally a wigglegram
Source: [https://lmao.center/blog/wiggle-accidents/](https://lmao.center/blog/wiggle-accidents/)
Do you know what a[wigglegram](https://en.wikipedia.org/wiki/Wiggle_stereoscopy)is?
[](https://lmao.center/blog/wiggle-accidents/wg_sc2.gif)↳ c\. "suavecorn" on redditIt is a kind of stereo image you make by looping frames together, like as a GIF\.
[](https://lmao.center/blog/wiggle-accidents/wg_hs1.gif)↳ c\. "aka\_hochstapler" on redditThe effect is quite convincing\.
[](https://lmao.center/blog/wiggle-accidents/wg_sc1.gif)↳ c\. "suavecorn" on redditI am something of an indecisive photographer and when I like an angle I will take a lot of frames, from slightly different angles etc\., looking for "the shot"\. And since I am also a bit of a hoarder I never clear out my camera roll\.
"Same shot from different angles"? You know what that sounds a bit familiar\.
[](https://lmao.center/blog/wiggle-accidents/accident_raw.gif)↳ scrollin'Sure enough my phone is full of wigglegrams that I took by accident\. Years' worth, waiting for me to sit down and stitch them together\.
Or, perhaps, for*something*to stitch them together\. It occurred to me last weekend that I can use[perceptual hashing](https://en.wikipedia.org/wiki/Perceptual_hashing)\- what TinEye \(et al\.\) uses for reverse image search \- to try and find runs of similar images and pull them out from my library automatically\. So I wrote a little script to hash all my pictures:
[](https://lmao.center/blog/wiggle-accidents/hashes.png)↳ slowly, slowlyHashing is quick but downloading photos from iCloud is not\.
The result is a hash that \- unlike a cryptographic function like sha1 \- will share more bits with hashes of similar\-looking images than with dissimilar ones\. We can use that to calculate the hamming distance between pairs of images and find a threshold:
[](https://lmao.center/blog/wiggle-accidents/hamming.png)↳ ten seems like a good boundaryAnd extract pairs:
[](https://lmao.center/blog/wiggle-accidents/runs.png)↳ plausible\.\.\.And hundreds of wigglegrams spew forth\.
[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-06-23_16-40-51.gif)↳ space mountain?[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-07-27_18-38-37.gif)↳ block island[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-05-04_13-21-17.gif)↳ deland[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-06-24_18-32-47.gif)↳ probably also disney?A few of them I am guilty of taking intentionally\. But most are true accidents\. As such many of them come out as less "stereoscopic" and more "kinescopic" \- like little unintentional movies\.
[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-06-14_19-35-14.gif)↳ notting hill[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-06-18_18-13-08.gif)↳ perugiaAnimals are a natural fit for the concept, unpredictable as they are:
[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-02-08_13-13-17.gif)↳ cat[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-08-07_18-20-31.gif)↳ another cat[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-07-06_17-52-46.gif)↳ dog[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-06-12_08-48-45.gif)↳ pigeonDesign\-work also\. \(I am always indecisive\.\)
[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-12-11_15-23-48.gif)↳ ipad sidecar I should write on[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-06-20_02-41-49.gif)↳ baby book[](https://lmao.center/blog/wiggle-accidents/wiggle_2024-06-07_04-06-21.gif)↳ same but doing a rad flip[](https://lmao.center/blog/wiggle-accidents/wiggle_2025-11-23_03-14-34.gif)↳ resistor bridge[](https://lmao.center/blog/wiggle-accidents/wiggle_2026-03-08_15-37-55.gif)↳ leg in piecesAnd sculpture:
[](https://lmao.center/blog/wiggle-accidents/wiggle_2026-02-03_15-41-19.gif)↳ olivetti[](https://lmao.center/blog/wiggle-accidents/wiggle_2023-01-08_14-26-44.gif)↳ charlotte?[](https://lmao.center/blog/wiggle-accidents/wiggle_2023-01-05_23-22-27.gif)↳ frog with a jointWhat fun\. I have the script up on[Github](https://github.com/JCLemme/wiggle-wiggle)if you want to play with it \- it'll work on your iCloud photos library if you're on a Mac, or you can point it at a directory of pictures otherwise\.
Cheers~
[](https://lmao.center/blog/wiggle-accidents/wiggle_2026-01-24_10-34-29.gif)↳ and happy birthday ig
---
[home](https://lmao.center/)~ posted june 04 2026
Google launches Pics, a new AI image generation app for Workspace that allows users to click on elements and leave notes to modify images, powered by Gemini and Nano Banana 2 models. It aims to simplify iterative AI image editing.
The author tests Google's Gemini AI avatar tool, which creates a digital clone from a selfie video to insert into AI-generated videos, finding the result impressively realistic yet unsettling.
Stanford and ByteDance introduce W-Flow, a single-step generative model that uses Wasserstein gradient flows to achieve state-of-the-art one-step ImageNet 256x256 generation (1.29 FID) with 100x faster sampling than multi-step diffusion models.
Google has updated the Gemini app to use Personal Intelligence and Nano Banana 2, allowing users to generate personalized images using their Google Photos library without needing long prompts.
An open-source macOS app that uses Apple's private WallpaperExtensionKit to allow custom video wallpapers, featuring gapless looping, multi-display support, and power-aware playback.