我使用openseadragon来显示金字塔(DZI)。
高分辨率图像是在运行时构建的,我希望在高分辨率图像构建过程中更新OSD查看器。
为了实现这一点,我用空白图像(白色图像)初始化DZI hirarcy。 然后,在构建高分辨率图像期间,我用新的图像替换空白图像(在服务器中)。
我如何根据需要更新特定的图块?服务器可以向客户端发回有关" raedy" (包含真实图像)。
答案 0 :(得分: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);
我还没有测试过这段代码,但它应该有用......
您必须处理的另一件事是浏览器想要缓存磁贴本身,因为当您尝试第二次加载时,它是相同的图像。据推测,您可以在标题中添加一些内容,告诉浏览器每次要求重新加载图像时都需要重新加载图像。
答案 1 :(得分:0)
您是否只想从纯色渐变到图像?您可以为图像不透明度设置动画以实现此效果,这样会更容易。
如果你真的想弄乱图像拼贴,一种可能就是直接编辑它们...假设你使用的是画布渲染器(除了在IE8上默认使用)你可以访问单个拼贴并使用tile.cacheImageRecord.getRenderedContext()
获取保存其数据的画布的上下文;然后你可以做任何你想做的事情。如果您正在进行此操作,则可能需要在查看器上观看tile-loaded
事件,以便在需要时可以编辑传入的图块。