About Ben's Picture Gallery
This is a photo gallery program for sharing pictures and video from a digital camera with family and friends.
It is a single PHP file that is easy to install on your own web server.
A major goal with this project is to have a simple and intuitive interface that
is easy for your whole family to use.
Design Assumptions:
(if these seem reasonable to you, then this program may be what you want)
- Your web server has unlimited disk space but limited bandwidth.
Typically this means you have a web server at your home connected to
the internet with a limited upload bandwidth (such as DSL or cable modems).
- Picture descriptions should be stored embedded in the original Jpeg file.
- All visitors will use a modern browser with Javascript
- This program does not provide a way to upload your pictures.
- Your photos are organized in folders like this:
top level
\---> year
\---> yyyy-mm-dd_event_name
|---> photo jpeg and movie avi files
\---> sub-folders
\---> photo jpeg and movie avi files
This is how the files are organized for the demo:
Features:
- Full screen slideshow
- You only need to provide the original pictures, a cache of thumbnail and screen images is automatically maintained
- Automatic rotation of images based on EXIF orientation data
- Videos are converted to the Flash .flv format for maximum browser compatibility and low bandwidth
- Video thumbnails generated from first frame
- Pictures are automatically scaled to fit on any screen with Javascript
- Load balancing mirror feature can speed up image loading when bandwidth is limited.
- RSS feeds for easily sharing your latest photos with iPhoto users
- Save photo destriptions in the JPEG file comments of the original file (like writing on the back of a print)
- Only "admin" users can modify comments or delete files
- The original photos do not need to be available thru the web server or can be restricted with a .htaccess file
- Visitors can buy photos using Digibug's service
- Multiple pictures can be downloaded in a zip file from the shopping cart
- Local configuration variables can be save in a separate file to make it easy to upgrade
- Specific features can be disabled
- Diagnostic feedback to help fix permission and dependency problems
Planned Future Features:
- optional to add watermarks on screen images
- Better centering of slideshow and screen images
(the javascript resize seems to interfere with the standard methods)
- improve clarity of cart/downloading zip file
- make comment editing overlay the whole screen rather than disturbing
the layout of the thumbnail grid (need to figure out the proper interface design)
- variables to control basic CSS styles, color/borders
- snipshot image editing, saving another copy of the original with a new name
Screenshot:
Installation:
System Requirements:
- Apache web server
- PHP with GD and EXIF support
- ffmpeg (for videos)
- flvtool2 (for adding metadata to videos)
- jhead (for editing JPEG file comments)
- zip (for downloading zip files)
- a flash video player (for playing the flv files in the browser)
Installation Instructions:
- Make sure the system requirements have been met.
- Download, unzip, and copy the bpg.php file to the directory that
will become your photo site
- Rename the bpg.php file to index.php
- Edit the site specific variables at the beginning of the script
(optionally make a config.php file and put your changes there)
Dependancies:
- Most Linux distributions include packages for Apache, ffmpeg, zip, and jhead.
- Flash Video Player
(Put the flvplayer.swf and ufo.js files in the same location as this script)
- FLVTool2
(metadata makes the progress bar work when playing a FLV movie)