我正在尝试使用 openseadragon (OSD) 版本 2.2.1 下载全尺寸的深度缩放图像。 我的图像位于服务器上,我可以使用 OSD 打开它们。我下载它们的步骤是:
- 使用 将图像列表加载到正文中
- 使用复选框检查要下载的图像
- 点击“下载”按钮进行下载
下载功能具有以下功能:
- 将图像列表加载到 gridview
- 创建 Canvas 并附加到正文
- 如果不存在则创建 OSD 查看器
- 使用以下方法打开第一个检查的图像:viewer.open(tileSources)
- 添加 OSD 处理程序“open”以设置源的完整大小。
- 绘制当前图像中的形状
- 添加 OSD 处理程序“tile-drawing”,用于设置简单时间变量的值
- 设置每 10 秒检查一次变量更改的时间间隔。如果变量在最后 10 秒内没有变化,则意味着所有图 block 都已绘制。
- 如果所有图 block 均已绘制,请使用“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 并加载图 block ? 有时,当每个浏览器 session 选项卡未处于事件状态时,它会开始下载,但图 block 根本不绘制。它下载空文件,因为查看器上没有图 block 。完全没有错误。
请给我一些想法。谢谢!
最佳答案
它在后台不起作用的原因是它使用 requestAnimationFrame,当您的选项卡位于后台时它会暂停。一种修复方法是执行以下操作:
OpenSeadragon.requestAnimationFrame = function(callback) {
setTimeout(callback, 16);
};
关于javascript - Openseadragon 在后台下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771034/