Introducing PhotoZoom

March 9, 2008

During MIX08, word got out via Chris of LiveSide of a project I and a few others on the Concept Development Team have been working on in our spare time for awhile.  PhotoZoom is a web site where anyone can upload their photos and turn them into zoom-able, pan-able albums, using the Deep Zoom technology in Silverlight 2 Beta 1.

In the couple of days since Chris’s post, many people have signed-up for PhotoZoom and uploaded photos.  I am amazed and thrilled with the response, and I hope that everyone is enjoying the site.  Of course, with traffic comes load, and this load has increased the waiting time between uploading photos and when their Deep Zoom album is available.  I will address what we plan to do to improve this situation below, but first let me explain a little about how PhotoZoom works, and before that, a disclaimer:

PhotoZoom is an experimental project developed by a small group of Microsoft developers, and it is definitely not an official, supported Microsoft product.  Also, I cannot make any guarantees that it will be operational at all times, that it will support a large number of users, etc.  This is not an official Microsoft press release and I am not a spokesperson.  I can’t make any suggestions about future Microsoft product releases related to this technology or concept.  In other words, I hope people will have fun with it, but please set your expectations accordingly.

With that said, here’s how PhotoZoom works.  When a user uploads an image, it is stored in a database and its album is put in a queue for processing.  The photo is available for viewing immediately, but its album is not "zoom-able" until it is processed.  Jobs running on the server process albums one at a time, in the order they were updated.

When an album is picked up from the queue, the job runs conversion logic similar to that found in the Deep Zoom Composer to convert all the full-size images in the album to a hierarchical set of image tiles that make up a Deep Zoom album.  This conversion is quite processor intensive, so it can take awhile, especially for a large album.  Finally, the output files along with the Silverlight XAML and script are uploaded to the Silverlight Streaming service, as a new application, and the album is finished. 

Hosting the Deep Zoom enabled albums on Silverlight Streaming brings the same advantages of high-performance and global-scale application delivery that any other Silverlight application hosted there enjoys.

Since, as I’ve said, album processing is resource intensive, lots of people have been uploading albums and the site is not exactly getting its own data center any time soon, albums have been taking far longer to process than we like – in some cases several hours or longer.  We plan to do the following to address this:

  • Optimize the album processing on our server.  We’ll look for ways to make the processing more efficient, which would have a big impact on the overall waiting time.
  • Offer a downloadable photo upload tool that processes the Deep Zoom albums right on the user’s PC. This will provide a batch upload capability and will greatly speed up the processing time by distributing the work away from a bottleneck.

In addition to these items, I’ve received lots of helpful suggestions via email and blog comments for features that would improve the PhotoZoom experience.  I’ve listed them below to acknowledge that I am paying attention to them and intend to address them as soon as I can.  Please keep in mind that PhotoZoom is not my or my teammates’ "day job," but we will work on them whenever we have a chance.

  1. Upload Tool
  2. Ability to link/embed zoom-able album in other web pages.
  3. Better user feedback about album processing status. E.g. estimate of where album is in the queue and how much longer it will take.
  4. Ability to upload more than one image at a time. This is partially covered by number one, but a better upload control in the site itself would still be useful for those who can’t or don’t want to install the upload tool.

That’s what I have so far.  If I missed your feedback or you have other suggestions, please include them in the comments or in email.