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