首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用silverlight在DeepZoom中显示自己的千兆像素图像

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

Stack Overflow用户
提问于 2011-03-03 06:12:18
回答 1查看 1.1K关注 0票数 2

我实际上使用我自己的代码来产生金字塔的不同层的图像(瓷砖)(那些本来是由deepzoom composer产生的).I想知道是否可以在silverlight中加载它们?通常在网上,我看到过从深度缩放编写器中导出的图像,因此也就有了这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-03 23:35:21

对于一个大的图像,如果你已经有了该图像的金字塔组的瓦片图像,这是相当容易的。

Xml

自己创建一个子文件夹(通常在ClientBin下),以包含您的一组大图像(在本例中,我们只将其称为"Content“)。在此文件夹中创建一个Xml文件来描述您的深度缩放图像,例如"MyLargeImage1.xml“。使用以下Xml:

代码语言:javascript
复制
<?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级才能以其原始分辨率查看此类图像。

这些文件夹中的每一个都将包含组成金字塔中此层的一组瓦片。这些是文件标题为"x_y“形式的.jpg文件,其中x和y是平铺在x和y轴上的顺序位置,其中0_0是左上角平铺。

在本例中,"8“之前的所有文件夹都将包含单个0_0.jpg文件,因为只有在级别8以上时,我们才会发现图像大于在Xml中指定的单个瓦片的256个限制。当然,如果您使用了不同的磁贴大小,那么这将对您有所不同。

到了"16“级,你会期望拥有从0_0.jpg到156_117.jpg的所有文件(18526个文件对于单个文件夹来说是一个很大的文件)。

Xaml

最后,要实际显示图像,请使用MultiScaleImage控件并将其源属性指向xml文件:-

代码语言:javascript
复制
<MultiScaleImage Source="/Content/MyLargeImage1.xml" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5174182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档