Как контролировать порядок загрузки нескольких изображений в 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 ответа
Я могу исправить свою проблему, контролируя непрозрачность вместо управления загрузкой по сети, у openseadragon нет метода для управления порядком загрузки на уровне изображения dzi, поэтому способ заключается в управлении непрозрачностью, потому что непрозрачность 0 не делает никакой загрузки. Спасибо авторам openseadragon за помощь в решении этой проблемы.
Вы можете попробовать использовать событие '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(), но это всего лишь пример.