2009-06-01 6 views
18

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

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

+0

Возможный дубликат [Определение системы DPI/PPI от JS/CSS?] (Http://stackoverflow.com/questions/279749/detecting-the-system-dpi-ppi-from -js-css) – Endless

ответ

3

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

Edit:

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

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

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

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

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

+1

К сожалению, единицы CSS точек, см и внутри не являются физически правильными. Они только относительно правильны. Это было первое, что я пробовал, пока не понял, что он не работает, и проверил спецификацию CSS ... к моему ужасу. –

+1

Ссылка на узлы CSS теперь: http://www.w3schools.com/cssref/css_units.asp – Christian

+0

Обновлено, спасибо @Christian – Randolpho

2

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

0

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

0

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