
[英]local DeepZoom / MultiScaleTileSource in Silverlight
[英]Displaying own gigapixel images in DeepZoom using silverlight
我实际上使用自己的代码在金字塔的不同层上生成图像(平铺)(否则由deepzoom作曲家生成)。我想知道是否可以在Silverlight中加载它们? 通常在网上,我已经看到图像从深度变焦作曲家中导出,这就是问题所在。
对于单个大图像,如果您已经为图像设置了金字塔形的平铺图像集,那将相当容易。
Xml
创建一个子文件夹(通常在ClientBin下)以包含您的大图像集(在本示例中,我们将其称为“ Content”)。 在此文件夹中创建一个Xml文件来描述您的deepzoom图像,例如“ 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”的文件夹。 在此文件夹中,我们有一系列代表金字塔图层的子文件夹。
对于Gigapixel图像(例如我上面使用的尺寸),您将有17个文件夹,名称从“ 0”到“ 16”。 因为您需要降低到16级才能以其原始分辨率查看此类图像。
这些文件夹中的每个文件夹都将包含构成金字塔中此层的一组图块。 这些是.jpg文件,文件标题的格式为“ x_y”,其中x和y是在x和y轴上的图块顺序位置,其中0_0是左上图块。
在此示例中,所有包含“ 8”的文件夹都将包含一个0_0.jpg文件,因为只有其级别高于8时,我们才能找到大于Xml中指定的单个图块的256个限制的图像。 当然,如果您使用了不同的图块大小,那么这将对您有所不同。
到“ 16”级时,您将拥有从0_0.jpg到156_117.jpg的所有文件(18526个文件是单个文件夹的许多文件)。
Xaml
最后,要实际显示图像,请使用MultiScaleImage
控件,并将其source属性指向xml文件:
<MultiScaleImage Source="/Content/MyLargeImage1.xml" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.