1

我正在使用 openseadragon 来显示金字塔(DZI)。

高分辨率图像是在运行时构建的,我希望在高分辨率图像构建过程中更新 OSD 查看器。

为了实现这一点,我用空白图像(白色图像)初始化了 DZI hirarcy。然后,在构建高分辨率图像期间,我将空白图像替换为新图像(在服务器中)。

如何按需更新特定的图块?服务器可以将有关“raedy”(包含真实图像)的图块的信息发送回客户端。

4

2 回答 2

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);

我还没有测试过该代码,但它应该可以工作......

你必须处理的另一件事是浏览器想要缓存磁贴本身,因为当你第二次尝试加载它时它是同一个图像。大概你可以在标题中放入一些东西来告诉浏览器它需要在每次请求时重新加载图像。

于 2016-08-01T17:52:38.090 回答
0

你只是想从纯色褪色到图像?您可以为图像不透明度设置动画以实现此效果,这会更容易。

如果您真的想弄乱图像图块,一种可能性是直接编辑它们...假设您使用的是画布渲染器(默认情况下在 IE8 上使用),您可以访问单个图块并使用它tile.cacheImageRecord.getRenderedContext()来获取保存数据的画布的上下文;然后你可以做任何你想做的事。如果您正在进入,您可能希望tile-loaded在查看器上观看事件,以便您可以在需要时在加载时编辑传入的图块。

于 2016-07-29T16:34:43.980 回答