Using Raspberry Pi as a Photo Station

Productivity Sauce
Although Raspberry Pi (RPi) is not powerful enough for heavy-duty image processing, you can still put it to some photography-related uses. For example, as an amateur photographer, I take a lot of photos when I travel, and I upload the photos to my Raspberry Pi at home which neatly organizes and keeps them safe till I get back home.
To turn RPi into a photo station, I opted for the Debian Wheezy minimal image. The only thing I needed to install was the usbmount tool which automatically mounts and unmounts external USB storage devices. Although it's possible to save photos on the SD card, I decided to keep them on a dedicated 16GB USB stick which usbmount tool mounts at /media/usb0. Since the minimal image comes with an SSH server enabled by default, I only had to configure my router to make RPi accessible from the Internet.
Usually I use the Eye-Fi with my DSLR camera to automatically transfer photos to whatever Android device I have on me. I then use the FolderSync app to upload photos to the /media/usb0/Eye-Fi directory on RPi using the SFTP protocol.
RPi then uses a simple Bash script to rename the transferred photos and organize them into folders by date. The script relies on the ExifTool which can be installed using the sudo apt-get install libimage-exiftool-perl command. The script itself is not particularly complicated:
#!/bin/bash SRC=/media/usb0/Eye-Fi DEST=/media/usb0/PHOTOS if [ "$(ls -A $SRC)" ]; then cd $SRC exiftool -r -d $DEST/%Y%m%d/%Y%m%d-%H%M%S.%%e "-FileName<DateTimeOriginal" -ext NEF $SRC else echo "No photos found" fi
The scripts renames each RAW file using the date and time info from the file's EXIF metadata, and organizes the renamed photos by date. Note that this particular example works with Nikon's NEF RAW files, so you have to specify the correct file extension to make the script work with other formats. I usually run the script manually, but you can create a cron job to run it automatically at a specified schedule. Just remember to make the script executable using the chmod +x .rename.sh command (replace rename.sh with the actual name of the script).
This is not the most advanced solution, but it serves me well when I'm out and about.
Comments
comments powered by DisqusIssue 260/2022
Buy this issue as a PDF
News
-
System76 Teams up with HP to Create the Dev One Laptop
HP and System76 have come together to develop a new laptop, powered by Pop!_OS and aimed toward developers.
-
Titan Linux is a New KDE Linux Based on Debian Stable
Titan Linux is a new Debian-based Linux distribution that features the KDE Plasma desktop with a focus on usability and performance.
-
Danielle Foré Has an Update for elementary OS 7
Now that Ubuntu 22.04 has been released, the team behind elementary OS is preparing for the upcoming 7.0 release.
-
Linux New Media Launches Open Source JobHub
New job website focuses on connecting technical and non-technical professionals with organizations in open source.
-
Ubuntu Cinnamon 22.04 Now Available
Ubuntu Cinnamon 22.04 has been released with all the additions from upstream as well as other features and improvements.
-
Pop!_OS 22.04 Has Officially Been Released
From the makers of some of the finest Linux-powered desktop and laptop computers on the market comes the latest version of their Ubuntu-based distribution, Pop!_OS 22.04.
-
Star Labs Unveils a New Small Format Linux PC
The Byte Mk I is an AMD-powered mini Linux PC with Coreboot support and plenty of power.
-
MX Linux Verison 21.1 “Wildflower” Now Available
The latest release of the systemd-less MX Linux is now ready for public consumption.
-
Microsoft Expands Their Windows Subsystem for Linux Offerings With AlmaLinux
Anyone who works with Windows Subsystem for Linux (WSL) will now find a new addition to the available distributions, one that’s become the front-runner replacement for CentOS.
-
Debian 11.3 Released wIth Numerous Bug and Security Fixes
The latest point release for Debian Bullseye is now available with some very important updates.
Re: Wrong variable name
Wrong variable name