任何人都可以想到一種方法,我可以發現每英寸的用戶像素?我想確保一個圖像顯示在網頁瀏覽器正好我需要它的大小,所以使用分辨率(我可以從用戶代理得到)和每英寸像素的組合我可以做到這一點。我怎樣才能找出每英寸的網頁查看器像素?
但是,我不確定是否有任何方法可以發現每英寸的用戶像素,理想情況下使用JavaScript或其他非侵入式方法。
有什麼建議嗎?
感謝,
CJ
任何人都可以想到一種方法,我可以發現每英寸的用戶像素?我想確保一個圖像顯示在網頁瀏覽器正好我需要它的大小,所以使用分辨率(我可以從用戶代理得到)和每英寸像素的組合我可以做到這一點。我怎樣才能找出每英寸的網頁查看器像素?
但是,我不確定是否有任何方法可以發現每英寸的用戶像素,理想情況下使用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和在WinXP和Win2k的火狐3.6。
更新:
增加了noCache參數。但我懷疑它會有什麼影響。我在上面提到的Windows版本中對FireFox和Opera進行了放大測試,並且他們一直將DPI引用爲'96',而與變焦量無關。看到什麼是移動設備將會很有趣。
Displays today support 96px/inch or 72pixels/inch。
你可以得到HTTP請求的User-Agent頭
User-Agent: Mozilla/5.0 (Linux; X11)
這個人會告訴你的操作系統,從這裏你可以做出決定。
我是也考慮到手機瀏覽器,而這些都有更高的水平和更多不同的像素/英寸範圍,因此我想知道是否有任何程序化的方式來做到這一點。 – 2010-02-17 16:00:26
他們已經假裝標準化了,但實際的顯示效果可能會有所不同 - 例如,我的上網本的真實DPI約爲170,而我的臺式機工作在約90。想一想:當你用同樣的分辨率同時獲得17「和19」顯示器時,實際的DPI不可能是相同的:)。 – 2010-02-17 16:22:51
這可能是非常艱難的 - 即使您以某種方式設法根據dpi縮放渲染圖像,您如何防止用戶直接在瀏覽器中縮放圖像?
您是否考慮過一些豐富的接口技術,如flash或Silverlight?他們可能會給你額外的選擇。
你知道閃光燈能否提供我需要的信息嗎? – 2010-02-19 17:45:49
我很確定flash不能:(:。 – 2010-02-19 18:07:03
你可以像老的繪圖軟件那樣做,並顯示一個可伸縮的標尺。讓用戶拖動虛擬標尺,直到它與他們放在屏幕上的物理標尺相匹配。
不是一個嚴肅的建議在生產中使用,但也許只有這樣,才能真正得到正確的答案:(。
謝謝你,我會記住:) – 2010-02-19 17:44:36
我認爲這是唯一的方法,將實際工作。但這不是很實際。 – Jacco 2010-02-22 17:09:35
最安全和最簡單的方法就是告訴瀏覽器你想要圖像的大小。 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" />
可能很難。我從未在我的生活中使用過一臺電腦,其中DPI被設置爲屏幕的正確實際DPI。當然,如果你的特定觀衆通常確實有它的話,那就沒問題。 – 2010-02-17 16:17:23
@Bart:我有,但是我自己設置它們(並且使用Linux,它比Windows更能夠應付事實) – 2010-02-17 16:23:51
我認爲標尺的想法是最有希望的,儘管對於用戶來說有點痛苦,如果他們正在查看很多圖像,您可以在第一次顯示標尺並保持其設置。 也許你可以添加到你的問題爲什麼你需要這個。 – PeteT 2010-02-23 16:30:02