Программно определить DPI через браузер?

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

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

5 ответов


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

Edit:

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

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

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

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

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


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


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


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


кто-то Авель, чтобы сделать это, но понятия не имею как....

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