繁体   English   中英

使用Silverlight在DeepZoom中显示自己的千兆像素图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM