openseadragon中如何控制多张图片的加载顺序

How to control the loading order of multiple images in 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,并让其他图像不透明度。这很好用。

想法是预加载图像并平滑地更改图像。

问题

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

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

感谢您的帮助。

您可以尝试使用 'open' 事件并在上一张图片加载后添加下一张图片。类似于:

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(),但这只是一个示例。

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

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