任何人都可以想办法,我可以发现每英寸像素的用户?我想确保在Web浏览器中的图像显示的究竟的大小我需要它,所以使用分辨率的组合,(我可以从用户代理获得)和每英寸我能做的像素此

然而,我不知道是否有任何的方式来发现每英寸像素的用户,理想地使用JavaScript或一些其它的非侵入性的方法。

任何建议?

谢谢,

CJ

有帮助吗?

解决方案

您可以使用下面的JavaScript函数来获取DPI。

<script type="text/javascript">
   var dpi = {
      v: 0,
      get: function (noCache) {
         if (noCache || dpi.v == 0) {
            e = document.body.appendChild(document.createElement('DIV'));
            e.style.width = '1in';
            e.style.padding = '0';
            dpi.v = e.offsetWidth;
            e.parentNode.removeChild(e);
         }
         return dpi.v;
      }
   }

    alert(dpi.get(true));  // recalculate
    alert(dpi.get(false)); // use cached value
</script>

不过,我认为它会永远在Windows机器上返回96

据我所知,目前还没有办法让操作系统以确定视口的实际物理尺寸。因此,它很可能是,这实际上是不可能的软件知道现实生活中的DPI。

不过,专业人士是某些部门确保屏幕上的DPI现实生活中的DPI相匹配。在那些情况下,上述的javascript很可能是足够的。

注意:结果 测试在Opera 9,IE6&7和Firefox 3.6在WinXP和Win2k的上面的代码。

<强>更新结果 加入则noCache PARAM。但我怀疑这会产生什么影响。我与放大Firefox和Opera在上面提到的Windows版本进行了测试,他们不断引述DPI为“96”,无论变焦量。将是有趣的,看看有什么移动设备做了这一点。

其他提示

您可以做,像古时的绘图程序一样,并显示可伸缩的统治者。让您的用户拖动实际统治者,直到他们已经把对所述屏幕的物理统治者相匹配。

不是一个严肃的建议在生产中使用,但可能真正得到正确答案的唯一途径:(

在最安全和最简单的将是告诉浏览器你想要什么尺寸的图像。 CSS支持英寸和指标,所以可以指定像任何这些实施例的图像:

<img src="image.png" style="width:15cm;height:10cm;" alt="Centimeters" />
<img src="image.png" style="width:5.9in;height:3.9in;" alt="Inches" />
<img src="image.png" style="width:150mm;height:100mm;" alt="Millimeters" />

显示今天支持96PX /英寸或72pixels /英寸

可以得到HTTP请求的用户代理报头

User-Agent: Mozilla/5.0 (Linux; X11)

这人会告诉你的操作系统,从这里你可以做出决定。

这可能是非常艰难的 - 即使你以某种方式设法扩展基于DPI的渲染图像,你怎么阻止他的浏览器上直接缩放图像的用户?

你有没有考虑像Flash或Silverlight一些丰富的接口技术?他们可能会给你额外的选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top