The team blog of the Expression Blend and Design
Yesterday, we released another update to Deep Zoom Composer, and you can download it for free from the following location:
In case you are not familiar with this app, Deep Zoom Composer (DZC) allows you take images, arrange them on a design surface, and export them for use with the Deep Zoom technology found in Silverlight 2. You can see a really impressive demo at Hard Rock Cafe’s Memoribilia site where they use Deep Zoom to show you a lot of high-resolution imagery. You can create something similar using your own images with DZC.
This update sports a lot of cool features besides just supporting the Silverlight 2 Beta 2 changes, so for the rest of this post, let’s take a look at these new features.
XML Support One of the big changes we made was replacing the old BIN file formats with an XML-based file format instead (dzc_output.xml):
EDIT: Picture updated on June 9th to refer to correct XML file.
This means that your MultiScaleImage control will no longer work when you set its Source property to a BIN file. It has to be the new XML-based file, but don’t worry, Deep Zoom Composer takes care of those details for you. The project template we export provides all of the hooks necessary for you to have a working Silverlight 2 Beta 2 application without you doing anything extra.
Thanks to Avi Dunn, Lutz Gerhard, Dan Cory, and Radoslav Nickolov of the Live Labs team for making these changes to both the encoder as well as the MultiScaleImage control.
Image Importing Changes, Quality Settings, Transparent PNG Support In previous versions, when you imported an image, we flattened everything down to a JPEG whose quality was 95. While that seems like a pretty good tradeoff, it does not help when you are importing a transparent PNG or a lossless format where quality really matters. In this version, we respect whatever file format your input image is in. If it is a JPEG or PNG, we encode it as a JPEG or PNG on the design surface. If it is some other lossless format, we pick the appropriate lossless format for you.
When exporting, you can now pick between JPEG or PNG, and if you picked JPEG, you have the ability to adjust the image quality:
We are not providing support for image formats beyond PNG and JPEG because we are only supporting the image types Silverlight 2 currently supports.
Undo and Redo You now have the ability to Undo and Redo any action you perform on the artboard:
Use the Edit menu or the standard Ctrl + Z and Ctrl + Y key combinations for performing Undo and Redo respectively.
Simplified Auto-Grid Arrangement To quickly help you arrange your images on the artboard, we introduced some cool snapping and guideline functionality in our previous version. Now, if you want to bypass manual arrangement altogether, you can arrange your images into a grid! Simply select multiple images, right click, and select Arrange into a Grid from the Arrange menu:
This will allow you to constrain your arrangement by either rows or columns:
All that said, the big takeaway is that you now have a very quick and easy way of arranging all of your images into a grid:
While the above example only shows same-sized images being arranged, you can work with images of varying sizes as well.
Support for Tagging When working with collections, having a way to filter your images would be useful. Many of you were modifying your SparseImageSceneGraph XML file by adding extra nodes to represent metadata. To help with this, we are now providing tagging functionality within the UI itself:
Select an image or a group of images, and set the tags you want on them. When you export, we now output an XML file called Metadata that contains your image details, its zorder, as well as any tags you set on it:
This file closely mimics your SparseImageSceneGraph, so you can use Silverlight 2’s support for LINQ to quickly parse the XML data and associate tags with the appropriate images. We will provide an example of how to do that in a future post.
Final Remarks We hope you like these new changes, and if you have any cool features or ideas on what you would like to see in the next version of the app, let us know by commenting below.
Cheers! Celso, Christian, Janete, Kirupa
Yesterday, we released another update to Deep Zoom Composer, and you can download it for free from the
These changes are good -- the PNG support especially! Nice work!
For my company, one of the key aspects of Silverlight 2 that excites us is the ability to create new, rich UIs in such a way that they can integrate with existing J2EE-based back-end services and our existing Solaris-based server infrastructure. Unfortunately, there does not appear to be an easy way to build deep zoom collections in this setup.
One thing I'd really like to see is a set of APIs to programmatically create deep zoom collections (both .NET and Java would be nice). I know there is the SparseImageTool.exe file, but I have a need in which I need to dynamically generate deep zoom collections at runtime. The kicker is that it must be done from a J2EE-based application running on Solaris...so obviously any solution that relies on Windows-based executable, or having the .NET CLR won't work. As an alternative, are there any functional specifications available so that I can build a Java component to get to the same end result?
I have the same request as James. Can you provide any info on that?
This version of Deep Zoom Composer seems to export even worse than the first version. Images are not even close to being displayed in the position as composed in Composer. Arranging into a grid makes the pictures display on top of each other. I hope a next version will be released soon!
During the opening keynote at TechEd Orlando last Tuesday, Soma announced the availability of Silverlight
Mike/James - I don't know what the plans are for that, but if I hear anything, I'll be sure to blog about it :)
Eric - can you create a small repro and e-mail me your project files to kirupac[at]microsoft.com?
I updated a few of my most recent samples to work with the Beta 2 version of Silverlight 2. You can find
XML formátum - ez igazából a nem a Composerben új, hanem a DeepZoom-ban - a lényeg
Thanks to the new XML format for Deep Zoom I got a Virtual Earth example running. Pretty cool stuff:
Little video clip and source code. Wish there was a way to get the multiscaleimage to talk directly to the VE tiles. Is there any more information about this?
Composer feature requests:
1. Provide an option when bringing images onto the composer canvas to not autoscale the images to some random default value. I need to have the relative scale of multiple images preserved, but it looks like Composer finds the largest image dimension for all images, and then scales all subsequent images to this value when importing onto the canvas. While this might be the generally desired behavior, there's another large class of usage in which autoscaling is the wrong choice.
2. Let me assign a transparency value to an image while working with it in composer so I can align images which overlap others. This wouldn't affect the final output, but only when composing.
1. Are the directory names (dzc_output_files, ...) hardwired and will they ever change?
Mike/James - The Deep Zoom file format is public, so you can write your own tools that run on any platform to generate the files. See the spec at http://msdn.microsoft.com/en-us/library/cc645077(VS.95).aspx
jaybo - thanks a lot for the feedback! Those are both great suggestions. We will look into supporting Option 1 in our upcoming version, and Option 2 is a bit more complicated, so we may defer that to a later date.
The directory names are hard coded, and the main reason is so that they can work with our precompiled XAP file. Since we don't actually compile and build the Silverlight project, we can't change to anything but the hard-coded name.
When I export my project, I haven't got any dzc_output_files folder or dzc xml.
I only have 2 files in "GeneratedImages" : Metadata.xml and SparseImageSceneGraph.xml.
What happened ? :s
What probably happened is that you tried to nest an image very deeply by zooming in a lot. There is a 2 billion virtualized pixel limit in the current version, so when you go beyond that level, the encoder stops working.
We will be fixing this in the next version of Deep Zoom Composer where, as you are nearing that limit, you will find out on the design surface itself.