Admittedly, the need to create an image pyramid in code is
not often encountered in system requirements; unless, of course, one is
developing a composer for DeepZoom or any other zooming technology.
Microsoft's DeepZoom composer has the designer aspect covered, so this article
actually assumes the road less traveled, hypothesizing that one could imagine a
need to create image pyramids, and consequently "image collections"
and "compositions" on the fly. Two examples immediately come to
mind, the first of which inspired this article.
Writing from experience, an automobile body shop quality
assurance department is required to review, often many, high resolution images
of vehicle damage; these images are uploaded from the body shop, and typically
loaded onto a viewing webpage at full resolution, which becomes increasingly
tedious. An alternative is to use DeepZoom, which requires a process to
dynamically create these necessary DeepZoom files, following the upload of the
original images, so that they can be presented in a zoom-able thumbnail viewer
on demand. As a second example, this process could also be used in a photo
sharing application, allowing users to upload high resolution pictures without
requiring the viewer to download huge image files.
The reader should have a basic understanding of zooming
technology, not necessarily of Microsoft's implementation (DeepZoom). Most
importantly, the reader should know what an image pyramid is. Silverlight
experience is helpful, as it will help the reader visualize the implementation;
however, this article focuses mainly on the code used to create an image
pryamid, which primarily involves using objects from the System.Drawing
namespace and some IO. Reader should also have a moderate understanding of
modern programming languages and concepts; this article uses C#, but can be
This article focuses primarily on the process of creating an