0

我正在尝试使用 openseadragon (OSD) 2.2.1 版下载完整尺寸的深度缩放图像。我的图像在服务器上,我可以使用 OSD 打开它们。我下载它们的步骤是:

  1. 使用将图像列表加载到正文中
  2. 使用复选框检查要下载的图像
  3. 点击“下载”按钮进行下载

下载功能具有以下功能:

  • 将图像列表加载到gridview中
  • 创建画布并附加到正文
  • 如果不存在则创建 OSD 查看器
  • 使用以下方法打开第一个检查的图像:viewer.open(tileSources)
  • 添加 OSD 处理程序“打开”以设置源的完整大小。
  • 绘制形状当前图像有它们
  • 添加 OSD 处理程序 ' tile-drawing ' 用于设置简单时间变量的值
  • 设置间隔以检查每 10 秒的变量更改。如果变量在最后 10 秒内没有变化,则表示所有图块都已绘制。
  • 如果所有图块都使用“File-Saver”库绘制下载图像

OSD 查看器源的全尺寸:

$("#OSDelement").attr("style", "height: " + viewer.world.getItemAt(0).source.dimensions.y / window.devicePixelRatio) + "px;" +
 "width: " + (viewer.world.getItemAt(0).source.dimensions.x / window.devicePixelRatio) + "px");

该站点的示例模型是: 小样

当浏览器的选项卡处于活动状态时,一切都下载正常(下载需要时间,但它正在完成它的工作)。问题是我试图在“后台”下载。当我转到不同的选项卡时,OSD 磁贴停止加载。当浏览器的选项卡未处于活动状态时,如何强制打开 OSD 并加载磁贴?有时,当每个浏览器会话的选项卡不活动时,它开始下载,但瓷砖根本不绘制。它下载空文件,因为查看器上没有图块。根本没有错误。

请给我一些想法。谢谢!

4

1 回答 1

1

它在后台不起作用的原因是它正在使用 requestAnimationFrame,当您的选项卡在后台时它会暂停。一种解决方法是执行以下操作:

OpenSeadragon.requestAnimationFrame = function(callback) {
    setTimeout(callback, 16);
};
于 2017-01-23T18:00:21.500 回答