Our company is looking for a development team to create software specifically for photography album design. Currently we use a combination of specialty DTP software, such as scribus, inDesign, and FotoFusion. We are moving towards linux as our primary OS, and therefore would like to use software that is consistent across all platforms.
We would like to open source this project after completion. We believe in the open source community. The developer will be listed as the coders, so proper credit will be given. The specific open source license has not been decided, but most likely GPLv2. The source code should be placed on a community source repository after completion, such as sourceforge or google.
Preferred language: Qt and python, but any cross-platform software is acceptable.
Primary OS target: Ubuntu (linux)
Timeline of project: 6 months
To create a simple, semi-automated album design software.
Desired user workflow:
5 steps from start to finish (not including adjustments).
1) User chooses a folder of images (or individual images) to use in the album.
2) User selects a "Style", or layout template. These may include traditional (black backgrounds, 1 8x10, 2 5x7, or 4 [url removed, login to view] per side), modern (solid color backgrounds, thin keyline around images), featured (cream or grey background, one image per page, dark keyline, slight glow), or artistic (mottled background with flourishes, sloppy borders on images). The styles will be xml based, so additional styles can be created later.
3) User selects the spotlight images. These images will be larger, full page, or two pages in the album.
4) User selects the number of pages/sides, and if the album starts on the right (1 page layout) or left (two page layout) .
5) Software groups images into potential spreads. The user may move images left (to a previous spread) or right (to a later spread).
6) Software creates initial designs based on choices. Details such as borders, horizontal and vertical spacing, backgrounds are pulled from the style template, but exact layout should be based on the images chosen, rather than a fixed template.
7) User will see a preview of design, and will have the ability to swap images within pages, move images to previous or next spread, or remove images. It should allow them to edit the image in an external program (such as gimp). The ability to add text should also be included here.
8) User can export the layouts to jpeg images (choosing book size, i.e. 8x8, 10x10, 12x12), export to layered tiff, or save the design. Save file should only consist of xml data. All images should be reloaded when layout is opened again. Images that are reduced should be sharpened, images that are enlarged should use a stepped rescale alogrhythm to minimize artifacting. Images that are too small should be flagged (increasing size more than 100%, for example).
Albums usually consist of between 10 pages / 20 sides, and 50 pages / 100 sides. Initially a simple square page / 2:1 spread is fine, but leave it open for the future to allow other sizes (such as 8x10/16x10 layouts, etc).
I would also like a way for users to be able to create new styles. They should be able to easily add background images, set layout spacing, choose .png (or other transparency enabled format) borders / masks, image borders, shadow / glow effects, and fonts. By allowing styles to be saved and shared, users can easily grow their collection and keep their album designs fresh.
Experience with python and QT.
Must be able to provide detailed milestone reports. I would like to pay incrementally based on milestone goal achievement.
Software absolutely must work on a standard Ubuntu 10.04 installation. .deb file preferred, but not required. Program must be structured to port easily to windows and mac systems.
PROJECT WILL BE RELEASED AS OPEN SOURCE WITH CREDIT TO THE CODER. If this is a problem, please do not waste my time with a bid. I intend to give back to the community in this way.
I have tried to be as thorough as possible with my project description, but if you have any questions, please don't hesitate to ask. I am a programmer, but my lack of experience with python, along with my limited time, prevents me from doing this project personally. I can provide psudeocode for some specific areas if needed, so we are all on the same page. I look forward to working with you!