Вы можете использовать следующую функцию 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>
Тем не менее, я думаю, что он всегда будет возвращать 96
на компьютерах с Windows.
Насколько я знаю, операционная система не может определить реальные физические размеры области просмотра. Таким образом, вполне возможно, что для программного обеспечения фактически невозможно узнать реальный DPI.
Тем не менее, профессионалы некоторых отраслей уверены, что отображаемый DPI соответствует реальному DPI. В этих случаях вышеупомянутого javascript, вероятно, будет достаточно.
Примечание:
Протестировал приведенный выше код в Opera 9, IE6 & 7 и Firefox 3.6 на WinXP и Win2k.
Обновление:
Добавлен параметр noCache. Но я сомневаюсь, что это будет иметь какое-либо влияние. Я протестировал его с увеличением в FireFox и Opera в вышеупомянутых версиях Windows, и они продолжают указывать DPI как 96, независимо от величины увеличения. Было бы интересно посмотреть, что из этого делают мобильные устройства.