An application to Manage Photo collections. This includes:
- Reading photos from Mobile Devices to a common directory structure: the photo collection on your computer or network drive
- Finding and removing duplicates from your photo collection
- PhotoTools is extensible (through OSGi) so additional functionality can be added via plugins
Many mobile devices can take photos but organizing these photos in a common collection can be a challenge. Often different tools are to be used to obtain photos from the devices which can result in different ways these photos are organized on disk resulting in a messy collection.
This application aims to unify this making it possible to create a neat and uniform photo collection with photos and videos from all your devices.
Start by downloading the application. The main application build can be downloaded from here.
unzip PhotoTools_0.5.zip
sh PhotoTools.sh (on unix or Mac OSX)
PhotoTools.cmd (on Windows)
This will launch the main Application Window: A number of tabs may be visible. The Photo Copy and About tabs will always be there.
The Photo Copy tab allows you to copy photos from a device or storage medium to your shared photo collection.
The source panel specifies where the photos should be copied from and what photos to copy. A directory source is always available. This can be any file system directory, a mounted SD card, a device mounted as a directory or a USB memory stick accessible as a directory.
The supported source types are extensible. For example the phototools-mtp project provides a plugin that makes it possible to use MTP-based devices (such as Android phones) as a photo source. The location in the source panel selects the location from which to copy photos. Additionally, date ranges and be specified on the source and individual photos can be selected to copy.
The target panel specifies where the photos will be copied to. The target location will be organized using a date-based structure. By default a structure that uses years as the top level directories and dates as subdirectories to contain the photos, for example:
.../2010/2010-02-14/IMG_2493.JPG
.../2010/2010-02-14/IMG_2495.JPG
.../2011/2011-12-24/DSC_1391.JPG
.../2012/2012-06-09/MOV_0004.MP4
The copy button will perform the copy operation. Note the following about the copy operation:
- Photos that are already in the target location will not be copied again. If a photo with the same name is found but it is not identical, a numerical suffix is used to create a different file name.
- Photos are organized on dates based on the date taken if this is available in the photo metadata.
- If the photo metatada is not available, an attempt is done to find out when the photo was created from the file metadata.
- Only supported photo and video formats will be copied. Other files will be ignored.
This tool can be used to find and remove duplicates from your photo collection. It works by pointing at a root location of your photo collection. It will then search all photos (and videos, if specified) in your collections and will try to find duplicates.
The duplicate finder will try to find duplicates of a photo based on the metadata embedded in the photo. So even photos that have been rotated or resized will be found.
- Start by selecting the root location.
- Select the file extensions to consider. Only file extensions for known photo and video formats are listed. Note that processing some large video files could be very time consuming.
- Hit 'Start'
Duplicate finder will crawl your photo collection to look for duplicates. When it finds them a window showing potential duplicates will open from where you can see them and optionally delete some of them.
PhotoTools is developed as an OSGi application and can be extended by adding further bundles that provide OSGi Services. The following functionality can be extended:
To add further tool panels to the application register an org.coderthoughts.phototools.api.ToolPanel
service. If the service
is found your tool panel will automatically appear in the application.
An example tool panel contributed in this way is Duplicate Finder Tool Panel.
To support additional photo and video formats register an org.coderthoughts.phototools.api.PhotoMetadataProvider
.
The service needs to be registered with the service registration property format
which should list one or more extensions
(in lowercase) that are supported by this PhotoMetadataProvider
. For example:
Dictionary props = new Hashtable();
props.put("format", new String [] {".mp4", ".m4v"});
bundleContext.registerService(PhotoMetadataProvider.class.getName(), new MyMP4Provider(), props);
An example video plugin is the MP4 Metadata Provider.
To support additional photo sources (in addition to the plain Directory source) provide the
org.coderthoughts.phototools.api.PhotoSource
service.
Once registered the photo source will appear as an option in the PhotoCopy panel.
An example photo source plugin is the MTP Photo Source.
If your plugin relies on another library and you want to make a credit note appear on the About dialog, implement the
org.coderthoughts.phototools.api.AboutInfo
service.
The PhotoTools project is developed and built as a bndtools project built using Apache ant. If you want a nice IDE, use Eclipse with bndtools installed and import the root directory of the source as Eclipse projects.
More information about the architecture can be found here: http://coderthoughts.blogspot.com/2013/01/a-mobile-device-photo-organizer-using.html