任何人都可以想到一种可以发现每英寸用户像素的方法吗?我想确保图像显示在网络浏览器中完全我需要它的大小,所以使用分辨率(我可以从用户代理获得)和每英寸像素的组合我可以做此
但是,我不确定是否有任何方法可以发现每英寸用户像素,理想情况下使用JavaScript或其他一些非侵入性方法。
有什么建议吗?
谢谢,
CJ
答案 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?他们可能会为您提供更多选择。