2016-07-28 32 views
1

私はピラミッド(DZI)を表示するためにopenseadragonを使用しています。openseadragon:特定のタイルを更新

実行時に高解像度画像が構築され、高解像度画像構築プロセス中にOSDビューアを更新したい。

これを達成するために、私は空白の画像(白い画像)でDZIヒラリを初期化します。 その後、高解像度画像の構築中に、空の画像を(サーバ内の)新しい画像に置き換えます。

要求に応じて特定のタイルを更新するにはどうすればよいですか?サーバーは、 "酷い"タイル(実際のイメージを含む)に関する情報をクライアントに返すことができます。

答えて

0

単色から画像にフェードしたいだけですか?この効果を得るために画像の不透明度をアニメートすることができます。これは簡単です。

イメージタイルを混乱させたい場合は、直接編集することもできます。キャンバスレンダラー(デフォルトでIE8以外で使用されている)を使用していると仮定すると、個々のタイルにアクセスすることができます。 tile.cacheImageRecord.getRenderedContext()を使用して、データを保持するキャンバスのコンテキストを取得します。あなたが望むことは何でもできます。あなたがそれに取り掛かっているなら、あなたが必要に応じてロードされているように受信タイルを編集できるように、ビューアでtile-loadedイベントを見たいかもしれません。

+0

こんにちは、ありがとう、私はイメージの退色について尋ねるつもりはありませんでした。私は私の質問を編集しました、それは今より詳細を持っています。 – mira

1

更新された質問ありがとうございます! OSDには、リセットのために特定のタイルを対象とする機能はありませんが、追加するのが良い機能です。 OSDをロードした後にこれを置くことができると思います。

OpenSeadragon.TileCache.prototype.clearTile = function(tile) { 
    OpenSeadragon.console.assert(tile, '[TileCache.clearTilesFor] tile is required'); 
    var tileRecord; 
    for (var i = 0; i < this._tilesLoaded.length; ++i) { 
     tileRecord = this._tilesLoaded[ i ]; 
     if (tileRecord.tile === tile) { 
      this._unloadTile(tileRecord); 
      this._tilesLoaded.splice(i, 1); 
      return; 
     } 
    } 
}; 

...この機能を追加する必要があります。あなたが対処する必要があります他の事...私はそのコードをテストしていませんが、それが動作するはず

viewer.tileCache.clearTile(tile); 

:あなたはその後、問題のタイルを見つけ、のような何かをしたいです2回目にロードしようとすると同じイメージなので、タイル自体をキャッシュしたいブラウザです。おそらく、ヘッダーに置いて、ブラウザーに要求するたびにイメージをリロードする必要があることをブラウザに伝えるためのものがあります。

関連する問題