AN-011 · Fun · Finished
Started Mar 2026
HackberryPi: a retro digicam with a live gallery
1.0Abstract
A Raspberry Pi 4 and a camera module set up to behave like a 2004 point-and-shoot. It previews and captures on two streams so the shutter never freezes the screen, adds grain and chromatic aberration on purpose, and pushes each photo to a web gallery that updates on every phone in the room as soon as you take it.
At a glance
| Parameter | Value |
|---|---|
| Status | Finished |
| When and where | Mar 2026, personal project |
| Built with | Raspberry Pi 4, Camera Module 2 or 3, an optional touchscreen; Python with picamera2, pygame and Flask; a systemd user service |
| Code | github.com/zhaojinchu/HackberryPi |
| Capture | Dual-stream: low-res preview and full-res capture, so the shutter never freezes the screen; tap the shutter zone or press space |
| Look | 1920×1080 at JPEG quality 48 with grain, chromatic aberration and downscale artifacts on purpose; or clean 2304×1296 at quality 95 |
| Gallery | Flask with Server-Sent Events pushes each new photo to every open browser |
The idea
A camera that feels like the one in a 2004 pocket: instant, slightly bad, and shared. The Pi does the capturing; a Flask gallery on the same board serves a page that updates live over Server-Sent Events, so everyone on the Wi-Fi sees the photo the second it’s taken.
Two capture modes
digicam_touch.py is the one to use: picamera2 runs a low-resolution preview stream and a high-resolution
capture stream at the same time, so pressing the shutter never freezes the viewfinder. It saves 1920×1080 at
JPEG quality 48 and then makes it worse on purpose: grain, chromatic aberration, downscale artifacts.
digicam.py switches configurations on capture instead and saves clean 2304×1296 at quality 95, for when the
retro look isn’t the point.
The gallery
gallery.py watches the photo directories with watchdog and pushes each new file to connected browsers
over SSE, with no polling and no refresh. It takes --port, --dirs and --host so it can watch both capture
folders at once.