One project I built end-to-end was a small system that turns a digital camera into an instant archival printer. The idea started because I liked the aesthetic of physical receipts and wanted a way to capture moments as printed artifacts rather than just digital photos.
The concept was simple: take a picture on a camera and have it automatically printed on receipt paper with metadata like ISO, shutter speed, aperture, time, and an archive number. But implementing it required solving several technical problems.
First I designed the workflow. The camera stores images as .JPG files, so I built a Python system that continuously watches a folder for new images. When a new photo appears, the script processes it automatically. I wrote code to extract EXIF metadata (ISO, shutter speed, aperture) from the image and format it into a readable footer. Then I built an image pipeline using Pillow to resize the photo to the exact width of the thermal printer, increase contrast, sharpen edges, and convert it into a clean black-and-white format suitable for thermal printing.
Next I integrated the printer hardware itself. I connected a thermal receipt printer and used the python-escpos library to send print commands directly over USB. This involved debugging device permissions, USB IDs, and driver conflicts until the system could reliably communicate with the printer. I also added features like printing a logo, feeding extra paper, and cutting the receipt.
To make the system robust, I designed the workflow so that once an image prints, it automatically moves from the incoming folder to a processed folder. This prevents duplicate prints and makes the system behave more like a production pipeline rather than a one-off script.
One project I built end-to-end was a small system that turns a digital camera into an instant archival printer. The idea started because I liked the aesthetic of physical receipts and wanted a way to capture moments as printed artifacts rather than just digital photos.
The concept was simple: take a picture on a camera and have it automatically printed on receipt paper with metadata like ISO, shutter speed, aperture, time, and an archive number. But implementing it required solving several technical problems.
First I designed the workflow. The camera stores images as .JPG files, so I built a Python system that continuously watches a folder for new images. When a new photo appears, the script processes it automatically. I wrote code to extract EXIF metadata (ISO, shutter speed, aperture) from the image and format it into a readable footer. Then I built an image pipeline using Pillow to resize the photo to the exact width of the thermal printer, increase contrast, sharpen edges, and convert it into a clean black-and-white format suitable for thermal printing.
Next I integrated the printer hardware itself. I connected a thermal receipt printer and used the python-escpos library to send print commands directly over USB. This involved debugging device permissions, USB IDs, and driver conflicts until the system could reliably communicate with the printer. I also added features like printing a logo, feeding extra paper, and cutting the receipt.
To make the system robust, I designed the workflow so that once an image prints, it automatically moves from the incoming folder to a processed folder. This prevents duplicate prints and makes the system behave more like a production pipeline rather than a one-off script.
By the end, the system became fully autonomous: I can drop multiple photos into the folder and they automatically print, archive themselves with numbered receipts, and move to storage.
By the end, the system became fully autonomous: I can drop multiple photos into the folder and they automatically print, archive themselves with numbered receipts, and move to storage.