We want a web app that allows a user to edit images on the browser and we're trying to decide which technology to use. We want to support simple image customization, such as high-quality resizing, cropping, image merging, and color transformations, as well as the addition of text elements with different fonts and colors.
The current options are:
- Flash: no worries about cross-browser compatibility; could use same image library on client and server; no iPhone/iPad support.
- Java (compiled to javascript with GWT): need to find a good image library in pure Java so it can be compiled to JS.
- Plain old javascript + HTML5: may be a mess due to multiple browsers; may need to write image editing code from scratch.
Here's what's most important to us / criteria for choosing:
- Image consistency: the image that the client edits on the browser must be exactly the same as the one we'll eventually use on the backend. We can achieve this by (a) having the same library both on the client and server to process images, (b) having the client generate the image and upload it to the server, or (c) use two different image processing libraries on the client/server and hope for the best in terms of consistency. Option (a) seems best, but it would only be possible if we use Flash or Java/GWT. We don't like option (b) because the images are large; we'd rather save a sequence of operations to perform on a raw image than saving multiple transformed images. And we don't really know if option (c) is safe or not.
- Scalability: We prefer the client to do as much work as possible to decrease server load.
- Image quality must be kept high
- Cross-platform: We'd like to support as many platforms as possible without rewriting everything (big negative for Flash due to iPhone/iPads).
What path do you recommend? Are there any alternative we're missing?
Thanks for any help!