2

私は実際に自分のコードを使用して、ピラミッドのさまざまなレイヤー(deepzoomコンポーザーによって生成されるもの)で画像(タイル)を生成します。Silverlightでそれらをロードできるかどうか知りたいですか?通常、ネット上で、これのためにディープズームコンポーザーからエクスポートされた画像を見たことがあります。

4

1 に答える 1

1

単一の大きな画像の場合、画像のタイル画像のピラミッドセットがすでにある場合は、かなり簡単です。

Xml

大きな画像のセットを含めるためのサブフォルダー(通常はClientBinの下)を作成します(この例では、単に「コンテンツ」と呼びます)。このフォルダーに、deepzoom画像を記述する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」というフォルダです。このフォルダーには、ピラミッドレイヤーを表す一連のサブフォルダーがあります。

ギガピクセル画像の場合(上記で使用したサイズなど)、「0」から「16」までの名前の17個のフォルダーがあります。このような画像をネイティブ解像度で表示するには、レベル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ファイルにポイントします。-

<MultiScaleImage Source="/Content/MyLargeImage1.xml" />
于 2011-03-03T15:35:21.057 に答える