2016-06-24 8 views
0

В моей ситуации у меня есть 10 изображений, загруженных в программу просмотра с одинаковыми границами. каждое изображение расположено один за другим.Как контролировать порядок загрузки нескольких изображений в openseadragon

// 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, и пусть другие с не непрозрачности. Это хорошо работает.

Идея заключается в предварительной загрузке изображений и смене изображений.

Проблема

Все изображения загружаются в то же время при увеличении или панорамирование, поэтому я хочу, чтобы контролировать порядок загрузки и отдавать приоритет видимого изображения, то загрузите следующий файл, и так далее.

Как я могу это сделать? Я не могу найти какой-либо способ приостановить загрузку фрагментов.

Благодарим за помощь.

ответ

0

Я могу исправить свою проблему, контролируя непрозрачность вместо загрузки сетевой сети, openseadragon не имеет способа контролировать порядок загрузки на уровне изображения dzi, поэтому способ управления непрозрачностью, потому что 0 opacity не выполняет никакой загрузки. Спасибо участникам openseadragon за помощь в решении этой проблемы.

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

1

Вы можете попробовать использовать «открытое» событие и добавить следующее изображение после загрузки предыдущего. Что-то вроде:

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(), но это всего лишь пример.

+0

Благодарим за помощь – oskararenas