About Fluxify


Fluxify provides client-side resizing of JPG images for faster upload.


Image Quality

If you're going to shrink the size of a photo, you might as well use a method which maximizes the visual quality of the result. We use one of the better methods, the bicubic resampling method, which helps preserve detail between pixels and prevent aliasing.

JPEG Decoding and Encoding

Silverlight doesn't allow access any low-level image manipulation, so we assembled code from several Java and C libraries into the FluxJpeg core library, which we are in the process of releasing the source for.

We see the ability to resize photos in-browser as very useful. Traditionally, web developers create separate uploader utilities or write ActiveX controls or browser plugins to enable this. The opportunity to do this within the context of Silverlight is advantageous to web developers looking to save on upload bandwidth and provide a faster photo upload experience for their users.

EXIF Tags

Fluxify preserves all JPEG application metadata streams, including those containing EXIF. We thought it would be a good idea to preserve image metadata when we resize photos.

Let's say you were at an internet cafe and you wanted to send a handful of pictures home. If you preserve the image metadata, the recipients of your photos can see exactly what time of day you took each photo, along with any other interesting information your camera records.

Limitations

Speed. You won't catch us in a bar bragging about the speed of our JPEG libraries. The code is largely unoptimized and necessarily runs in a completley managed context. It's a lot faster than it was when we first got it to compile, but it still has a ways to go.

We don't recommend trying to send a lot of photos if the originals are larger than about 9 megapixels. It will take fluxify 5-10 seconds or so to decode the JPEG, and a few more seconds to encode. If you have just a handful to send, then waiting a couple of minutes with the browser minimized is probably no big deal. But if you're trying to send 50 12 megapixel photos, you can probably save time using a full-fledged resize utility.

Another limitation: JPEG or bust. We currently don't support any other image formats.

Server

Fluxify does all the JPEG resize work on the client side, making the server side less complex. We're using PHP scripts on the server to receive images and send emails.

Performance Tips

Note that you can click 'Send' before all of your photos are done resizing, and Fluxify will start uploading the ones that are ready immediately, and automatically finish the rest once they're ready. Additionally, once you've sent a batch of photos successfully, you can edit your selection or change recipients, and the second 'Send' will go a lot faster. But be careful not to close or refresh your browser, since then you will have to start over.

Questions?

Leave us a comment on our blog at fluxcapacity.net, or email us@fluxcapacity.net