Deep Zoom Batch Export using C# – Update


In a previous post I’ve showed how to automate the exporting process of a DeepZoom composition or collection. Meanwhile the Microsoft DeepZoom Composer tool has been updated (and new features have been added too!), breaking my previous sample.

Given the positive feedbacks I received from the previous post, I’ve decided to do some refactoring and updates to the previous solution. The current implementation include:

  1. Class Library: it encapsulate all the wrapping methods of the SparseImageTool.
  2. Test Project: it shows how to use the library. The library can be used from WindowsForms/WPF/ASP.NET….as long as the machine has the SparseImageTool installed.

You can download the updated library and source code here.

The new class diagram is like so:

ClassDiagram

Given a directory containing all the images and a name for the collection, it’s now really easy to create programmatically a collection.

   1: static void CreateCollection(string collectionName, string sourceImagesFolder, string outputFolder)
   2:         {
   3:             // Create a collection converter
   4:             CollectionConverter collectionConverter = new CollectionConverter();
   5:             // Required parameters
   6:             collectionConverter.SparseImageToolPath = GetSparseImageToolPath();
   7:             collectionConverter.ImagesCollection = GetImages(sourceImagesFolder); // IEnumerable<string> containing the path of the images
   8:             collectionConverter.ImagesDestinationFolder = outputFolder;
   9:             // Optional parameters
  10:             collectionConverter.CollectionName = collectionName;
  11:             collectionConverter.CollectionFormat = CollectionConverter.CollectionFormats.XML;
  12:             //collectionConverter.ConvertedOverlapPixels = ...
  13:             //collectionConverter.ConvertedTileSize = ...
  14:             //TODO: You can customize the exporting experience here, by setting the according parameters such as:
  15:             // Tile Size, File Format, Collection Format, Compression, Quality, ...
  16:  
  17:             // Attach to completion handler
  18:             collectionConverter.BatchCompleted += delegate
  19:              {
  20:                  Console.WriteLine("Conversion completed\nPRESS <ENTER> TO EXIT");
  21:              };
  22:  
  23:             try
  24:             {
  25:                 collectionConverter.BatchCollectionExport();
  26:             }
  27:             catch (Exception e)
  28:             {
  29:                 Console.WriteLine(e.Message);
  30:             }
  31:  
  32:             Console.WriteLine("Conversion started...");
  33:             Console.ReadLine();
  34:         }

You can download the updated library and source code here.

Have fun!

Technorati Tags: ,,
Comments (11)

  1. Mick says:

    I don’t know how to use the output of this library. Isn’t there a metadata.xml missing?

  2. gisardo says:

    The output of the library is the same as if exported from DeepZoom Composer. You will then need to create a Silverlight app to show the composition.

    G.

  3. Elan says:

    Hello Giorgio Sardo.

    Thanks for the good article.

    I have a problem with this.

    I trying to use your program on my asp.net web server.

    when I’m testing on my WebDev Server(VS 2008) it works fine.

    but on my IIS(IIS7.0 ,windows server 2008).

    it doesn’t works.

    I tried on three ways.

    1. web.cofig system.web identity impersonate true

    2. machine.config processModel change username

    3. give a ‘xml and sparseimagetool’ access authority to asp.net user(NETWORK SERVICE and etc)

    but still don’t know why. can’t figure out.

    I’m struggling about 3days on this.

    could you give me a any advice?

    It will helps me a lot.

    thank you

  4. Thanks Giorgio!

    I was looking for this since long. The Deep Zoom Composer provides a manual interface for creating collections, but it is often required in applications to programmatically create collections and expose to web. Thanks for this article.

  5. Just a update…

    Your application uses SparseImageTool.exe, which is not shipped now. Instead <a href=’http://blogs.msdn.com/expression/archive/2008/11/26/hello-deepzoomtools-dll-deep-zoom-image-tile-generation-made-easy.aspx‘ title=’DeepZoomTools.dll’>DeepZoomTools.dll</a> is used for creating image collections programmatically.

    Thanks!

  6. gisardo says:

    Thank you Sandeep, you are right. The DeepZoom team recently built a managed library to create dinamic composition (which wasn’t available when I’ve first written this post). 🙂

    Have a good zoom! 😀

  7. David says:

    can’t do the update with deepzoomtools.dll !?

  8. Mobile phone says:

    For me, this is very exciting, I like this style, I hope to be able to see more 斯蒂芬