Fluxify: A client-side photo resize and upload tool for Silverlight v1.1

21 September 2007

[RAW]

There’s a ton of potential for the Silverlight platform out there, and some smart guys out there from FluxCapacity.net have been working on an excellent client-side photo resizing application that targets Silverlight v1.1.  This was totally a pet project that I’d been thinking of producing, but I got stuck when it came to the need to implement a managed JPEG codec to perform the client-side resizing since the Silverlight CTPs don’t expose any of this functionality.

You need to immediately check out “Fluxify

Fluxify

This is a core capability that many sites need to have, and have been either implementing with custom third-party ActiveX and Java controls, Flash in some cases, or simply recommending to users that they use a desktop application to resize their images by restricting the permitted photo upload size. 

Is anyone else tired of the custom ActiveX control that Facebook uses?  Why spend on extra bandwidth or burden your server farm with having to use CPU cycles to resize images when you could use the client’s machine!?

Facebook's proprietary ActiveX control for resizing and uploading photos

The user experience in Fluxify is pretty good: when you click to select the photos that you would like to upload using the FileOpenDialog for instance, the underlying user interface is greyed out to keep the experience focused on selecting files:

Selecting photos user experience

The authors of the sample have a blog post announcing Fluxify as a proof-of-concept, the actual application up for people to try out resizing & sending their photos via e-mail to others, and a page that goes into some of the technical details of their implementation (or a least what makes it special, unique, and what they had to overcome).  Some highlights from that:

  • They've created a purely 'safe' managed code JPEG library in transparent user code
  • EXIF tags are preserved through the resize.  A pet peeve that I have with most image resizing tools is that they don’t do this, and I love knowing the camera model and even GPS location of photos that’s often in the EXIF data
  • Asynchronous send: if you have a lot of photos, it can resize/send/etc. in the background
  • They’re using the OpenFileDialog, a feature of the managed Silverlight framework with which I’m quite familiar.  The ability to select multiple photos is a major improvement over the HTML <input type="upload" ... /> form element

And from the sound of it, we can expect to eventually see more technical details and some source from the developers in the future. 

I think the real creative genius here is the innovation on top of the CTP platform; I can't even imagine having to implement the JPEG codec in JavaScript.  Picnik was made with Flash/Flex, a very mature platform-so it's good to know that perhaps someday we may technically see a Picnik based on .NET.

Hope everybody else out there thinks this is as awesome as I do!

[/RAW]

Jeff Wilcox is a Software Engineer at Microsoft in the Open Source Programs Office (OSPO), helping Microsoft engineers use, contribute to and release open source at scale.

comments powered by Disqus