像素到MM方程式?

是否有一个可靠的公式来计算MM的像素大小? 或者是不可能交叉设备?

我们正在使用一个定制系统,为许多具有不同屏幕尺寸的设备提供内容,它可以检测MM中的屏幕宽度,但我们希望将其精确地转换为像素大小,以使用简单的jquery脚本动态地提供正确大小的图像! ?

有任何想法吗?

干杯保罗

我做了什么 :

 

然后:

 var pxTomm = function(px){ return Math.floor(px/($('#my_mm').height()/100)); //JQuery returns sizes in PX }; 

tl; dr:如果您不知道设备的DPI ,您将无法推断出现实世界中像素的大小。


像素本身并不是真实世界的测量单位。

如果您考虑显示它们的设备的DPI值 ,它们可以成为真实世界的测量。

公式是:

  • mm = ( pixels * 25.4 ) / DPI

因此,在96-DPI屏幕设置上查看8个像素:

  • ( 8 * 25.4 ) / 96 = 2.116mm

所有这些假设设备未缩放/缩放。

您需要知道设备的DPI以及是否缩放显示。 这意味着您必须拥有每个设备的物理屏幕尺寸和屏幕分辨率的数据库。

由于无法检测物理屏幕大小,因此无法可靠地计算此值。

老post,但今天偶然发现了这个问题,不得不让它发挥作用。

诀窍是创建一个尺寸为英寸的元素并请求其宽度,这将为您提供每英寸的px。

  function inch2px(inches) { $("body").append("
"); var pixels = $("#inch2px").width(); $("#inch2px").remove(); return inches * pixels; } function px2inch(px) { $("body").append("
"); var pixels = $("#inch2px").width(); $("#inch2px").remove(); return px / pixels; }

现在如果你需要毫米, px2inch(10)*25.4px2inch(10)*25.4

基于上面的@Dawa答案,这是我的解决方案:

 var mmToPx = function(mm) { var div = document.createElement('div'); div.style.display = 'block'; div.style.height = '100mm'; document.body.appendChild(div); var convert = div.offsetHeight * mm / 100; div.parentNode.removeChild(div); return convert; }; 

请注意,100mm高度,将为您提供更好的精度因子。 计算将是即时的,div将不可见。 不需要jQuery

我用这个简单的function

 function pix2mm(val,dpi){ return (val/0.0393701)/dpi; } 

测试输出300,600,900 DPI

 var r = pix2mm(100,300); // converting 100 pixels it 300 DPI console.log(r); // output : 8.4 mm var r1 = pix2mm(100,600); // converting 100 pixels it 600 DPI console.log(r1); // output : 4.2 mm var r2 = pix2mm(100,900); // converting 100 pixels it 900 DPI console.log(r2); // output : 2.8 mm 

演示: https : //jsfiddle.net/xpvt214o/29044/