Итог: не пытайтесь визуализировать больше пикселей, чем это возможно на экране. Вам не нужно трогать данные, которые не имеют отношения к конечному изображению, потому что они все равно не видны. Давайте возьмем обычный просмотрщик изображений:
- у вас есть исходное изображение в виде пикселей RGB в оперативной памяти
- Вы хотите отобразить изображение
поэтому обычно вы создаете поверхность, на которую можете рисовать, а затем перебираете исходные данные и соответственно рисуете пиксели на поверхности. если вы "приблизите масштаб", то вместо исходного вы рисуете 4, 8, 16 пикселей. и если вы "уменьшаете масштаб", вы рисуете только каждый 4-й, 8-й, 16-й пиксель (или, чтобы улучшить качество, вы рассчитываете новый цвет на основе пикселей вокруг того, который вы выбрали).
проблема с масштабированием ближе: вы склонны позволить оконной системе отсекать пиксели за пределами видимой области, хотя у вас все еще есть, скажем, большая 8k * 8k поверхность. ваш экран 1980x1020 .. так что это огромная трата памяти (и скорость в конце). было бы лучше узнать, что видно, прежде чем вы начнете получать данные из первоисточника.
проблема с уменьшением масштаба: вы должны рассчитывать снова и снова конечный пиксель. было бы лучше иметь исходные данные как можно лучше и с некоторыми более низкими разрешениями.
Итак, Seadragon сочетает в себе несколько вещей: вычисление того, что видит пользователь, доступ к данным для заполнения только видимой области и очень быстрое заполнение. Кроме того, будьте готовы получить данные, которые "близки" к тому, на что вы смотрите прямо сейчас. редко можно приблизить изображение ОЧЕНЬ близко, а затем НЕМЕДЛЕННО перескочить в другой угол этого изображения. обычно вы немного перемещаетесь по одному региону, чтобы можно было предварительно выбирать данные.
лучшее и более глубокое объяснение: