Imaging Warehouse (from here on “the app”) is an iOS application that manages photos and their metadata. It features native online storage support with security.
Input files and formats
The app accepts jpeg 2000 (http://en.wikipedia.org/wiki/JPEG_2000) and regular photo file formats (gif, jpeg, tiff, and so on) as input.
The app stores its database on popular cloud storage sites. The first phase supports Dropbox and iCloud. Future phases will add support for other popular sites. The app would require users to set their storage account usernames and passwords a priori so it does not prompt the user when reading/writing from/to the storage.
The app has a related website that allows a user to manage his account. The user account profile contains sensitive information such as its website password, application password, messages from other users (invites for sharing the photo), storage sites, billing information (if applicable). Some of the info can be managed from and within the app. Each time the profile is updated within the app, the information is propagated to the website. The website serves as the central location to synchronize multiple devices belong to the same account.
For example, when a user installs the app on a new device and login with his credential, the app retrieves the profile from the website and the user does not need to input his database configuration manually.
The import process adds photos from user into his database. The database does not store the original photos and may stripe across multiple storage sites in general. The database may store photo data in fixed size chunks (storage oriented) and would require data merge in order to display a photo. As the first phase only supports single site configuration (dropbox or icloud) this may not matter for the time being.
Each data chunk (the photo file itself for the first phase) is stored as a file physically in the filesystem presented by the cloud storage.
Each database contains one separate md file that hosts all of the metadata, pointers to all of the data chunks and their checksum. When each image is imported, all of its metadata are stripped and imported into the md file.
For the first phase of the project, it is assumed the photos have already been uploaded to an online location, namely dropbox or icloud, either from an offline media such as USB thumbdrives or CDs or transmitted electronically such as email or IM.
The Metadata file
The md file stores the metadata of the database itself (location of the database data chunks) and the metadata of each photo user had imported. The metadata file can be used to generate reports and facilitate other studies (location, subject, equipment etc). It stores information in key-value form. It is also compressed and encrypted.
The images within the database can be downloaded and assembled from its metadata and data chunks on the fly before being displayed to the user. The user is allowed to perform basic image manipulation such as panning and zooming through standard iOS hand gestures.
The application menu needs to be present or callable so the user may exit the image manipulation mode.
Future phases may support adding image mark up and notes at different layers so the original image can be reproduced.
The app maintains a fixed although statically adjustable (through app preference) size cache, which saves the assembled image on the device, thus speeds up the displaying of the most frequent used images and allows offline viewing. Future phases may allow the user to specify the images that need to be locally cached.
The app targets iPad as the initial delivery and test platform. Standard iOS development environment xcode should be used.