Программно определить DPI через браузер? - PullRequest
18 голосов
/ 01 июня 2009

Я бы хотел программно определить DPI дисплея пользователя, чтобы показать веб-страницу с точным количеством единиц (сантиметров / дюймов). Я знаю, что это странная просьба: это для исследовательского проекта визуализации, и это своего рода контроль. В настоящее время мы делаем это, заставляя пользователя поместить кредитную карту на экран и сопоставить изменяемый размер div (через Mootools) с реальной кредитной картой, и вуаля, мы можем получить DPI и правильно отобразить страницу.

Кто-нибудь может придумать программный способ сделать это?

Ответы [ 5 ]

3 голосов
/ 01 июня 2009

Если вы делаете это в javascript / mootools, CSS-единицы - ваш друг. Вы можете указать размеры в дюймах, сантиметрах или даже точках (1/72 дюйма). Если по какой-либо причине вам абсолютно необходим DPI, несмотря на то, что вы можете указать размеры в этих единицах, просто измените размер используемого вами div с изменяемым размером на известный размер и рассчитайте его из переведенного размера пикселя.

Edit:

К сожалению, единицы измерения CSS точки, см, а в не являются физически правильный. Они только относительно правильный. Это было первое, что я пытался, пока я не понял, что это не так работает и проверил спецификацию CSS .. чтобы моя тревога. - Брэндон Пелфри

Это хороший момент; браузеры, как правило, имитируют его, принимая значение DPI по умолчанию (я думаю, 72 или 96) и продолжая это.

Ну, если вам нужна точная калибровка, как вы просите, вам не повезло. Вы никогда не сможете получить его, не прочитав ни текущее разрешение монитора, в котором включен браузер, ни «видимую область экрана» этого монитора. Ты не получишь это с помощью Javascript.

Я предлагаю вам сделать предположение по умолчанию, что браузеры делают и размер в соответствии с единицами CSS. Затем вы можете разрешить своим пользователям «регулировать размер», используя метод, который вы упомянули, но , только если это необходимо . Сделайте это на отдельной странице с вычислением DPI, сохраненным как часть сеанса пользователя или в виде файла cookie.

Кроме того, как только Microsoft исправит эту ошибку , вы можете использовать «независимые от устройства единицы измерения» Silverlight для точного масштабирования.

2 голосов
/ 01 июня 2009

Вы не можете. DPI - это функция разрешения экрана в пикселях и физических размеров дисплея. Последний недоступен в любом интерфейсе браузера, о котором я знаю.

0 голосов
/ 01 апреля 2010

Кто-то может сделать это, но понятия не имеет, как ...

http://www.infobyip.com/detectdisplaysize.php http://www.infobyip.com/detectmonitordpi.php

0 голосов
/ 01 июня 2009

Невозможно из браузера без кода, запущенного на целевом компьютере. Если бы вы могли установить что-то на целевой компьютер, вы могли бы определить достаточно о мониторе, чтобы рассчитать это.

0 голосов
/ 01 июня 2009

Я думаю, что вы не получите точных результатов - например, вы можете изменить размер изображения с помощью монитора. Я бы предпочел придерживаться пользовательского метода, хотя вы можете, например, определить разрешение экрана для первой оценки.

...