We have an image viewer, which reads in a directory of images, and displays them based upon the tag in an XML file. We require a simple script, which is able to sort or group images in a source directory, based upon visual similarities (e.g. small, medium, large, thumbnails, fuzzy, higher / lower quality versions of the same image should appear together). This means that after sorting the images in the directory in order, the script will need to modify the value to the new order to display the images.
Specification (deliverables) of the application tool to be developed:
1. An executable script that asks the user to select:
a. A parent directory of images (it must also be able to scan folder trees (i.e. folders within folders)
b. An XML file, which contains details of every image in the directory in the following example format:
[url removed, login to view]
[url removed, login to view]
(Please note, the above is an example only shows the record of 2 the images. In a reality, there will be many more images, and will be more details in each record, e.g. , … etc. The tags , and will be present in each record)
2. To sort the images in order based upon visual similarity (i.e. grouping similar images together).
The of each is a unique MD5 hash for each file, please use this when referring to a file, with the name between the tag as the second sort (in the event two hashes are the same). Any video or non-image files found in the directory must be included at the end.
3. Create a copy of the original XML File with the same name and rename the original XML file to [url removed, login to view]
4. In the new XML file, change the number between the tags to order which the file appears in within the sorted directory.
Important accuracy related requirements:
• Must compensate for thumbnail versions, lower quality versions, smaller and larger versions of images etc (i.e. grouping all of these together)
• Must not move or modify the original files
• Corrupt images, un-open able images, videos and other non-image files must be moved to the end
- Splash screen on load appears for 5 seconds “For Newton13 use only”, with the ability for us to modify or disable this in the source code
- A desktop executable script with basic onscreen GUI (e.g. select image directory, select XML file, run, results “X image files sorted” etc.)
- Basic GUI preferably created in Eclipse Window Builder or NetBeans
- Must be able to be combined and further developed as part of a larger application
- Must be provided to HurstTrentham with an Application Programming Interface for interaction without needing to use the GUI
- All source code and functions will be plain text and commented
- The freelancer must disclosure which how images are sorted an any techniques used
- Any third-party code must be highlighted, and must be free for commercial usage by HurstTrentham
- All source materials, including a number of actual tests must be included, along with a simple user guide on how to run, and what to expect
- The system must create a log file for each sort with filename as ‘Sort Log’ with date and time
- Must be able to handle all common image files including (JPG, JPEG, BMP, GIF, RAW, EXIF, TIFF, PNG etc)
- The freelancer must collect test data, none will be provided
- Any programming language can be used, as long as it can compiled as an executable, and have the ability to interact, be packaged and controlled by a Java front-end or Java Application
- Must run on Windows, Mac and Linux