2017-01-20 2 views
0

Я пытаюсь загрузить полный размер изображений с глубоким увеличением, используя версию openseadragon (OSD) версии 2.2.1. Мои изображения находятся на сервере, и я могу открыть их с помощью экранного меню. Мои шаги для их загрузки являются:Openseadraon скачать в фоновом режиме

список
  1. Загрузка изображений в тело с помощью
  2. Проверьте, какие изображения для загрузки с помощью
  3. кнопку
  4. Нажмите «Загрузить» флажок, чтобы скачать

Скачать функция имеет следующие функции:

  • Загрузить список изображений в gridview
  • Создание холста и добавить к телу
  • Создание экранного просмотра, если не существует
  • Открыть первый проверили изображение с помощью: viewer.open (tileSources)
  • Добавить OSD обработчик «открытым» для установки полноразмерного источника.
  • Draw формирует текущее изображение имеет их
  • Добавить OSD обработчик «плитки рисования» для установки значения для переменной, которая просто времени
  • Установить интервал для проверки каждые 10 секунд переменных изменений. Если переменная не изменяется за последние 10 секунд, это означает, что все плитки рисованы.
  • Если все плитки нарисованы скачать изображения с помощью библиотеки «File-спаситель»

Полного размера источника для экранного просмотра:

$("#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"); 

Образца макета сайта: mock-up

Все загружается хорошо, когда вкладка браузера активна (требуется время для загрузки, но она выполняет свою работу). Проблема в том, что я пытаюсь загрузить в фоновом режиме. Когда я перехожу на другую вкладку, плитки OSD перестают загружаться. Как заставить экранное меню открывать и загружать плитки, когда вкладка браузера не активна? Иногда он запускается при загрузке, когда вкладка не активна в сеансе браузера, но плитки вообще не рисуются. Он загружает пустые файлы, потому что на экране нет фрагментов. Ошибок нет.

Пожалуйста, дайте мне несколько идей. Благодаря!

ответ

1

Причина, по которой он не работает в фоновом режиме, заключается в том, что он использует requestAnimationFrame, который приостанавливается, когда ваша вкладка находится в фоновом режиме. Одним из исправлений было бы сделать что-то вроде:

OpenSeadragon.requestAnimationFrame = function(callback) { 
    setTimeout(callback, 16); 
}; 
+1

Это работает! Спасибо. Чертежная плитка - это больше времени, но она может работать в фоновом режиме. – Observer

Смежные вопросы