Для одного большого изображения это достаточно просто, если у вас уже есть набор мозаичных изображений для изображения.
Xml
Создайте себе подпапку (обычно в ClientBin), в которой будет содержаться ваш набор больших изображений (для этого примера просто назовем его «Контент»). Создайте в этой папке файл XML, чтобы описать ваше глубокое изображение, для этого примера «MyLargeImage1.xml». Используйте следующий XML: -
<?xml version="1.0" encoding="utf-8"?>
<Image TileSize="256" Overlap="1" Format="jpg" xmlns="http://schemas.microsoft.com/deepzoom/2008">
<Size Width="40000" Height="30000" />
</Image>
Обратите внимание, что атрибут TileSize
указывает длину стороны используемых вами плиток. Следовательно, если вы использовали другой размер плитки при создании пирамиды, вам следует отрегулировать это значение. Обратите также внимание на Overlap
, это указывает на то, сколько пикселей может перекрывать каждый элемент мозаики, если вы не использовали никакого перекрытия в своем тайлинге, установите это значение 0.
Укажите фактические размеры вашего изображения в пикселях в элементе Size
.
Файлы изображений
Теперь в той же папке, что и этот XML-файл, создайте папку с таким же названием, но с суффиксом "_files". В этом случае папка называется «MyLargeImage1_files». Именно в этой папке у нас есть ряд подпапок, представляющих слои пирамиды.
В случае гигапиксельного изображения (например, с размерами, которые я использовал выше) у вас будет 17 папок с именами от «0» до «16». Поскольку для просмотра такого изображения в его родном разрешении вам нужно будет опуститься до уровня 16.
В каждой из этих папок вы будете содержать набор плиток, составляющих этот слой в пирамиде. Это файлы .jpg с заголовком файла в форме "x_y", где x и y - порядковый номер листов по осям x и y, где 0_0 - верхний левый лист.
В этом примере все папки вплоть до «8», включая «8», будут содержать один файл 0_0.jpg, так как только его уровень выше 8, мы найдем изображения, размер которых превышает 256 для одной плитки, указанной в Xml. Конечно, если вы использовали другой размер плитки, это будет отличаться для вас.
На уровне "16" можно ожидать, что все файлы будут иметь размер от 0_0.jpg до 156_117.jpg (18526 файлов - это много файлов для одной папки).
Xaml
Наконец, чтобы фактически отобразить изображение, вы используете элемент управления MultiScaleImage
и указываете его свойство source на файл XML: -
<MultiScaleImage Source="/Content/MyLargeImage1.xml" />