Можно ли получить физический размер экрана пользователя без использования физического объекта или диагонального измерения?

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

До сих пор я сталкивался с решениями, которые учитывают диагональное разрешение экрана (например, 21,5 дюйма) и разрешение экрана, чтобы рассчитать, насколько большой пиксель.

Другой подход заключается в том, чтобы попросить пользователя поставить на экран карточку стандартного размера, такую ​​как банковскую карту, и измерить края для расчета размера.

Есть ли способ сделать это без физического объекта на экране или без пользователя, которому необходимо знать размер диагонального экрана?

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

Ответы

Ответ 1

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


В большинстве операционных систем задано несколько параметров dpi (точек на дюйм), которые могут быть настроены пользователем или системным администратором, жестко закодированы (если видеоустройство встроено и не может быть изменено, например, экран ноутбука), или, может быть, автоматически обнаружен (если видео протокол поддерживает это).

Этот параметр или аналогичный параметр браузера будет использоваться браузером для расчета абсолютных размеров, используемых в CSS, таких как cm, mm, in, pt и т.д.

Таким образом, вы можете просто полагаться на браузер, чтобы показать его правильно, или попросите своего пользователя правильно установить настройку. (Конечно, на видеопроекторе с размером проекции 3 × 4 м вы действительно не хотите показывать объект размером 20 см.)

Ответ 2

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