如何控制openseadragon中多个图像的加载顺序

时间:2016-06-24 21:39:53

标签: openseadragon

在我的情况下,我在具有相同边界的查看器中加载了10个图像。每张图片都排在后面。

// source is an array of url images.

for(i=0;i < source.length-1;i++){
        this.viewer.addTiledImage({
                tileSource: source[i],
                index: i,
                opacity:0
            });
}

我的目的是使用滑块(范围输入)控制每个图像的不透明度,滑块将对应的图像不透明度设置为1,让其他图像不具有不透明度。这很好用。

这个想法是预加载图像并平滑地改变图像。

问题

缩放或平移时,所有图像都会同时加载,因此我想控制加载顺序并优先显示可见图像,然后加载下一张图像,依此类推。

我该怎么做?我无法找到暂停加载图块的方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用&#39; open&#39;事件并在上一个图像加载后添加下一个图像。类似的东西:

var i =0, viewer = this.viewer;
viewer.addTiledImage({
    tileSource: source[i],
    index: i,
    opacity:0
});
viewer.addHandler('open', function() {
    i++;
    if (source[i]) {
        viewer.addTiledImage({
            tileSource: source[i],
            index: i,
            opacity:0
        });
    } else {
        viewer.removeAllHandlers('open');
    }
});

请注意,这是未经测试的示例代码,但您应该明白这一点。你应该使用removeHandler()而不是removeAllHandlers(),但这只是一个例子。

答案 1 :(得分:0)

我可以通过控制不透明度而不是控制网络下载来解决我的问题,openseadragon没有方法来控制dzi图像级别的下载顺序,所以方法是控制不透明度,因为0不透明度不做任何下载。感谢openseadragon贡献者帮助我解决这个问题。

https://github.com/openseadragon/openseadragon/issues/971