答案1
底线:不要尝试渲染超出屏幕能力范围的像素。您不需要触碰与最终图像无关的数据,因为无论如何都看不到这些数据。让我们使用一个普通的图像查看器:
- 你有内存中 rgb 像素的原始图像
- 你想显示图像
因此,通常您会创建一个可以绘制的表面,然后对原始数据进行迭代并相应地在表面上绘制像素。 如果“放大”,则每次放大都会绘制 4、8、16 个像素而不是原始像素。 如果“缩小”,则每次放大只绘制第 4、8、16 个像素(或者,为了提高质量,您可以根据所选择的像素周围的像素计算新颜色)。
放大的问题:你倾向于让窗口系统剪掉可视区域之外的像素,尽管你仍然有一个 8k * 8k 的大表面。你的屏幕是 1980x1020 .. 所以这浪费了大量的内存(最终浪费了速度)。最好在开始从原始源获取数据之前找出可见的内容。
缩小的问题:您必须一遍又一遍地计算最终像素。最好尽可能地获得原始数据并且使其具有较低的分辨率。
因此,seadragon 结合了几件事:计算用户可以看到的内容,访问数据以仅填充可视区域,并且非常快速地进行填充。另外,准备好获取“接近”您当前所看位置的数据。将图片放大到非常近然后立即跳转到该图像的另一个角落的情况并不常见。通常你会在一个区域内稍微平移一下,这样也可以预取数据。
更好更深入的解释: