In this project a Java applet must be programmed which pulls a bitmap image from a web server. The Java applet has a number of controls which the user can use to edit the image and afterwards the image can be saved back to the server again and the applet closes.
The applet must provide a number of functions to the user:
- Editing workspace is fixed size of approx 600 pixels width and 500 pixels height. (Possibility to change these settings in the source code).
- Color selection for the current foreground color and background color
- Pixel editing and drawing with a brush with variable diameter
- Dropper tool to load color of a selected pixel in either the current foreground or background color setting
- Zooming from 25% to 1600%
- Dragging of image with a hand tool
- Flood fill with tolerance setting
- Image mirror and flip (horizontal and vertical mirror line)
- Image rotate in steps of 90 degrees
- Brightness and contrast correction
- Color replacer with tolerance setting to replace the background color with the foreground color
- Full undo functionality with an undo level of at least 10 operations
- For all draw functions: left mouse button draws in foreground color, right mouse button in background color
On the server side an Apache 2.2 web server will be running with PHP 5.0. The Java Applet should communicate at the Apache/PHP level. No installation of other scripting languages or for example JSP on the server side is allowed. The necessary server side scripting for a PHP test page which loads the applet and performs the image transfer must be provided by you.
Please explain in your proposal how you would solve particular problems, including pulling and pushing the image from the server in the given environment, handling the undo buffer etc.
We can provide a test server for this purpose running a LAMP configuration. System will be tested on both Windows and Linux browsers. Delivery in full clean source code with documentation in the English language. Delivery must recompile out of the box in a clean new Java development environment.
I've done similar image-editing applets in the past, having coded most of the functionality you mention from scratch. I'm confident I can build this image editor quickly and reliably with maintainable code.