是否有一个可靠的公式来计算MM的像素大小?或者这不可能跨设备?
我们正在使用一个定制系统,为不同屏幕大小的设备提供内容,它可以检测MM的屏幕宽度,但我们希望准确地将其转换为像素大小,以使用简单的jquery脚本动态提供正确大小的图像! ?
有任何想法吗?
干杯保罗
我做了什么 :
<div id="my_mm" style="height:100mm;display:none"></div>
然后:
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以及是否缩放显示。这意味着您必须拥有每个设备的物理屏幕尺寸和屏幕分辨率的数据库。
由于无法检测物理屏幕大小,因此无法可靠地计算此值。
老帖子,但今天偶然发现了这个问题,不得不让它发挥作用。
诀窍是创建一个尺寸为英寸的元素并请求其宽度,这将给你每英寸的px。
function inch2px(inches) {
$("body").append("<div id='inch2px' style='width:1in;height:1in;display:hidden;'></div>");
var pixels = $("#inch2px").width();
$("#inch2px").remove();
return inches * pixels;
}
function px2inch(px) {
$("body").append("<div id='inch2px' style='width:1in;height:1in;display:hidden;'></div>");
var pixels = $("#inch2px").width();
$("#inch2px").remove();
return px / pixels;
}
现在,如果你需要毫米,只需要做px2inch(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 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
但是:ぁzxswい