Как вы заметили, DeepZoomComposer поддерживает элемент <Tag></Tag>
, который можно использовать в элементе управления Silverlight MultiScaleImage ( фильтрация по примеру тега ).
Вы также правы в том, что «потеряете» любую информацию, добавляемую в файл XML, при редактировании в DeepZoomComposer и повторной генерации (однако вы не потеряете ее, если введете в DeepZoomComposer).
Чтобы обойти эту проблему, я написал небольшое консольное приложение под названием TagUpdater - в основном оно работает так :
Вы помещаете свои метаданные в ИЗОБРАЖЕНИЯ: формат файла JPG поддерживает множество различных полей, но сейчас давайте используем заголовок, ключевые слова (теги), описание и рейтинг
Вы добавляете свои изображения в DeepZoomComposer от Microsoft (не обязательно их выкладывать, так как вы, вероятно, захотите сортировать их динамически, и не надо вводить какие-либо метаданные) и Экспорт как обычно
Вызовите TagUpdater.exe Metadata.xml
через консоль (DeepZoomComposer сгенерирует файл Metadata.xml).
TagUpdater извлекает метаданные непосредственно из ваших изображений и обновляет Metadata.xml
(см. Ниже). Это разрушительно для существующих данных <Tag>
, но в противном случае файл можно использовать, как прежде, для предоставления информации метаданных для коллекции DeepZoom в элементе управления MultiScaleImage.
<Image>
<FileName>C:\Documents and Settings\xxxxxx\My Documents\Expression\Deep Zoom Composer Projects\Bhutan\source images\page01.jpg</FileName>
<x>0</x>
<y>0</y>
<Width>0.241254523522316</Width>
<Height>0.27256162721473</Height>
<ZOrder>1</ZOrder>
<Tag>Bhutan,Mask</Tag>
<Description>Land of the Thunder Dragon</Description>
<Title>Bhutan 2008</Title>
<Rating>3</Rating>
</Image>
Вы можете продолжать добавлять изображения / регенерировать, потому что метаданные поступают из изображений (не в поле тега DeepZoomComposer).
Вот пример - обратите внимание, как теги и описание справа обновляются при наведении курсора на каждое изображение, а также на видимые изображения, которые фильтруются по нажатию на тег.
Источник Кирупы можно изменить, чтобы использовать эти дополнительные данные ...
string tagString = g.Element("Tag").Value;
// get new elements as well
string descriptionString = g.Element("Description").Value;
string titleString = g.Element("Title").Value;
string ratingString = g.Element("Rating").Value;
Надеюсь, это будет интересно - сам TagUpdater не единственный способ сделать это. Это довольно просто: он просто открывает файл Metadata.XML, просматривает элементы <Image>
, чтобы открыть <FileName>
, извлекает метаданные, добавляет дополнительные элементы XML и сохраняет XML. Используя имя файла в качестве «ключа», вы можете получить дополнительную информацию из базы данных (например, цену или более описание данных) и расширить XML-файл столько, сколько хотите.