在 OpenSeadragon 的逻辑坐标系中,所有比率的计算默认以图像宽度为基准。
这是 OpenSeadragon 的设计逻辑,逻辑坐标系通常是一个宽度为 1 的方形(即宽度为 1,高度按照原始图像的宽高比调整)。
详细解释
- 逻辑坐标系的缩放与比例:
- OpenSeadragon 的逻辑坐标系以宽度为 1 作为基准。
- 无论图像的实际宽高比是多少,逻辑坐标的 X 和 Y 坐标的比例都是基于宽度计算的。
- 高度的换算:
- 逻辑坐标中的高度是通过图像的宽高比计算的,值为:
- 中心点的逻辑坐标:
- 图像的中心点逻辑坐标始终为:
-
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 中,所有逻辑坐标的比率(包括中心坐标的 x
和 y
)默认都是基于图像宽度计算的,而高度通过宽高比进行换算。这种设计可以统一逻辑坐标的比例,不受图像具体尺寸的影响。