如何找出每英寸网页查看器的像素数?

时间:2010-02-12 13:26:01

标签: browser size screen pixels

任何人都可以想到一种可以发现每英寸用户像素的方法吗?我想确保图像显示在网络浏览器中完全我需要它的大小,所以使用分辨率(我可以从用户代理获得)和每英寸像素的组合我可以做此

但是,我不确定是否有任何方法可以发现每英寸用户像素,理想情况下使用JavaScript或其他一些非侵入性方法。

有什么建议吗?

谢谢,

CJ

5 个答案:

答案 0 :(得分:6)

您可以使用以下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和&amp ;;中测试了上面的代码。 WinXP和Win2k上的7和Firefox 3.6。

<强>更新
添加了noCache参数。但我怀疑它会产生什么影响。我在上面提到的Windows版本中使用放大FireFox和Opera进行测试,并且无论缩放量如何,它们都会将DPI引用为“96”。看看移动设备对此有何看法会很有趣。

答案 1 :(得分:5)

你可以做旧的绘图包,并显示一个可伸缩的标尺。让你的用户拖动虚拟标尺,直到它与他们放在屏幕上的物理标尺相匹配。

对生产使用不是一个严肃的建议,但可能是实际得到正确答案的唯一方法:(。

答案 2 :(得分:1)

最安全,最简单的方法是告诉浏览器您希望图像的大小。 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" />

答案 3 :(得分:0)

Displays today support 96px/inch or 72pixels/inch

您可以获取HTTP请求User-Agent标头

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

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

答案 4 :(得分:0)

这可能非常困难 - 即使您以某种方式设法根据dpi缩放渲染图像,如何防止用户直接在浏览器中缩放图像?

您是否考虑过一些丰富的界面技术,如Flash或Silverlight?他们可能会为您提供更多选择。