将像素转换为可点击图像的相对cm?

时间:2010-10-03 09:22:37

标签: image language-agnostic math

对于如何做到这一点有一点大脑冻结。我有一个足球场区域的图像,用户点击该图像以指示出现的位置。

我想将坐标存储在我的数据库中的真实世界单位中,以便我以后可以更改图像。但是,我无法弄清楚这样做的公式(忽略了足球场的长度可变的事实)。

所以说我的图像是400像素×300像素,代表真实世界的场地12000厘米x 9000厘米,点300px,100px是多少厘米?如何在800x600像素的图像上将此cm值转换回px?以码/英寸为单位也可以接受。

请告诉我工作而不仅仅是单个值。谢谢!

2 个答案:

答案 0 :(得分:2)

就像任何其他单位转换一样:300 * 12000/400, 100 * 9000/300是用户点击足球场的点。

更一般地说,假设两个标度具有相同的零(即0 source == 0 target)并且您知道标度等于x source == y target的点,那么valueInTarget = valueInSource * (y / x)

更一般地说,假设您知道两个比例相等的两个点,即x1 source == y1 targetx2 source == y2 target,那么valueInTarget == (valueInSource - x1) * (y2 - y1)/(x2 - x1) + y1 == (valueInSource - x2) * (y1 - y2)/(x1 - x2) + y2

答案 1 :(得分:2)

使用比率。 400px代表12000cm,因此您的宽度比为每像素30厘米。将该比率应用于300px可以得到9000cm。

在第二个示例中,您的宽度比为每像素15厘米(12000/800)。所以9000cm在第二张图像上给出600px。

相同的高度。