Picture Project Outline
Outline
Purpose
The goal of this project is to create a robust image tagging system in a lightweight desktop application.
Development Stages
This project will be broken down into three distinct phases. Each phase should be nearly complete before tackling the next to ensure we end up with a usable application.
Standalone Desktop Application
This application will implement the bulk of the program's logic and functionality. Importing, exporting, tagging, and searching will all be accessible from the program. This will be defined in much greater detail later.
Windows Explorer Hooks
This stage will include the implement of right-click menus in Windows Explorer. These menus would let you tag images without launching the main application window. At this point, the application would probably become service-based and have a "tray icon." Additionally, I may look into creating a custom Explorer view (think XP's thumbnail view, list view, etc) for slick integration.
Internet Service Synchronization
This final stage will implement syncing your image library online. This stage is not well defined. If Randomland starts using Drupal exclusively for image storing, I will try to implement a bridging module. If not, this stage may be killed entirely.
Platform
The initial phase of the project will be developed for Microsoft Windows operating systems XP and newer. The application will be dependent on .NET 3.0 runtime libraries.
We may consider porting this to Mono/GTK. However, there is too much of a learning curve there to make me seriously consider this in the first stage of development.
Terminology
The following list of terms is to help clear up any confusion in discussions about this project.
- Application - the installed, running instance of the program on the end user's machine
- End User - the main user of the application. Currently, we are designing this as a single-user system.
- Library - the collection of all images managed by the system
- Main Pane (UI) - the large, central screen of the user interface
- Set - a group of images defined by the end user
- "The System" - a nebulous term to describe the expected functionality and/or implementation of the program.
User Interface
This section describes how the user interface will behave. This section will become increasingly detailed as we hammer out the expected functionality of the system.
The application shall consist primarily of single pane. This Main Pane will list display items from your library as thumbnails. Several views will be available including:
- All images in library
- All sets
- All images not in at least one set
- Calendar view showing pictures taken on each day of the month
Each view can be arranged in several ways, including:
- By date taken
- By rating
Each view can be changed to sort either ascending or descending.
The application will have a toolbar at the top containing the following functionality:
- Import folder into library
- Simple search
- Link to more advanced search
- Change view mode (see above)
- Change sort order (asc/desc)
- Change group by (date, rating, ?)
- Change search parameters (given by list of tags?)
- Get properties of selected items (range of date taken, tags in common, average rating?)
- Link to a way to view all tags in the system
- Link to a way to view all managed folder in your "library"
Tagged Data (What Is Stored?)
The system will automatically tag common EXIF data from JPEGs. By "tagging," the system will store a local copy of this information (independent of the image file itself) so it can be searchable.
Tagged EXIF data:
- Aperture
- Camera Make
- Camera Model
- Date Taken
- Elevation
- Exposure Bias
- File Type (JPEG or RAW)
- Flash (yes/no)
- Focal Length
- ISO
- Mode (auto, AV/TV, manual, etc)
- Orientation
- Shutter Speed
Additionally, you will be able to view all available EXIF data stored in the image. However, only the fields mentioned above will be searchable.
- Add new comment
- 130 reads