OpenSeadragon 的逻辑坐标系中,所有比率的计算默认以图像宽度为基准


这是 OpenSeadragon 的设计逻辑,逻辑坐标系通常是一个宽度为 1 的方形(即宽度为 1,高度按照原始图像的宽高比调整)。

详细解释

  1. 逻辑坐标系的缩放与比例
  • OpenSeadragon 的逻辑坐标系以宽度为 1 作为基准。
  • 无论图像的实际宽高比是多少,逻辑坐标的 X 和 Y 坐标的比例都是基于宽度计算的
  1. 高度的换算
  • 逻辑坐标中的高度是通过图像的宽高比计算的,值为:

在 OpenSeadragon 中,**所有逻辑坐标的比率(包括中心坐标的 `x` 和 `y`)默认都是基于图像宽度计算的_逻辑坐标

  1. 中心点的逻辑坐标
  • 图像的中心点逻辑坐标始终为:
    在 OpenSeadragon 中,**所有逻辑坐标的比率(包括中心坐标的 `x` 和 `y`)默认都是基于图像宽度计算的_逻辑坐标_02
  • 0.5 表示中心点的 X 比率,0.5 × 逻辑高度 表示中心点的 Y 比率。

验证代码

以下代码验证中心点坐标的计算:

const viewer = OpenSeadragon({
    id: "viewer",
    tileSources: "path/to/image.dzi"
});

// 获取图像尺寸
const imageWidth = viewer.world.getItemAt(0).getContentSize().x;
const imageHeight = viewer.world.getItemAt(0).getContentSize().y;
console.log('图像宽度:', imageWidth, '图像高度:', imageHeight);

// 获取逻辑中心点
const center = viewer.viewport.getCenter();
console.log('逻辑中心点:', center);

// 验证实际像素坐标
const pixelX = center.x * imageWidth; // X 坐标基于宽度计算
const pixelY = center.y * imageWidth; // Y 坐标也是基于宽度计算

console.log('实际像素中心点:', pixelX, pixelY);

关键点

  • Y 坐标也是以宽度为基准
  • 在 OpenSeadragon 的逻辑坐标系中,Y 的比率并不是以图像高度为基准,而是以 图像宽度为基准
  • 这意味着逻辑坐标 (x, y) 中,x 是图像宽度的比例,y 是宽度的比例,乘以宽高比修正实际像素。
  • 高度的逻辑范围
  • 逻辑高度 = 图像的高宽比。
  • 如果图像宽高比是 2:1(宽是高的两倍),逻辑坐标范围为 [0, 1] 宽,[0, 0.5] 高。

总结

在 OpenSeadragon 中,所有逻辑坐标的比率(包括中心坐标的 xy)默认都是基于图像宽度计算的,而高度通过宽高比进行换算。这种设计可以统一逻辑坐标的比例,不受图像具体尺寸的影响。