en primer lugar, para ayudar con la posible (y muy común) confusión con el término DPI (puntos por pulgada):
DPI no es exactamente una parte de "configuración de pantalla". Se usa (incorrectamente) en dos contextos diferentes:
- Los píxeles nativos por pulgada de una pantalla (o video). Determina cuán pequeños son los píxeles. Puede tener la misma resolución de 1024x768 tanto en una pantalla de computadora portátil de 14 "como en una de 17". El primero sería aproximadamente 1280/14 = 91 DPI y el último sería aproximadamente 1280/17 = 75 DPI. El DPI de una pantalla es inmutable; no se puede cambiar con la configuración de visualización. More...
- Los puntos por pulgada pintados en papel durante la impresión. Este es el número de puntos uno al lado del otro que una impresora/fotocopiadora/máquina de fax puede imprimir en una pulgada de papel. La mayoría de las impresoras pueden configurarse para imprimir con un DPI más bajo, simplemente imprimiendo cada punto como dos, cuatro, etc. puntos. More...
Al imprimir una imagen, hay muchas cosas que afectan a las dimensiones finales de la imagen en el papel:
- Las dimensiones de la imagen de origen - esta es la cantidad de píxeles o datos allí es.
- El DPI de la imagen de origen. Este valor determina cómo deben interpretarse las dimensiones al imprimir la imagen.
- Si la imagen de origen no tiene información de DPI integrada (un JPEG puede tener una, un GIF nunca lo hace), el programa que se usa puede tener configuraciones para especificar un DPI. Esto podría ser un visor/editor de imágenes o incluso un navegador web.
- El factor de zoom que normalmente se especifica en un cuadro de diálogo de impresión.
- La configuración actual de DPI de la impresora.
- El DPI físico (máximo) de la impresora.
En resumen, la imagen que está imprimiendo se volverá a muestrear (reducirá o ampliará) para que coincida con el PPP final que se utiliza en el proceso de impresión. Cualquiera de las partes involucradas puede estar causando esto (el programa, el controlador de impresión, la impresora).
Ahora, volviendo a su pregunta. No, no puede determinar el DPI de la pantalla, porque no está en el dominio del software. Es un término de dominio de hardware que describe qué tan grande es el monitor que un usuario puede permitirse comprar.Actualización: Inicialmente escribí esta respuesta en 2009, con mi comprensión de las tecnologías actuales. Como @thure señaló, ahora puede (desde 2012?) Utilizar la función window.matchMedia para determinar el DPI de la pantalla.
Si está tratando de lograr precisión en la impresión de un diseño HTML, como otros han sugerido, su CSS debe usar dimensiones de impresión como em, pt o pc en lugar de px. Sin embargo, el resultado final aún puede depender del uso del navegador. Si convertir su HTML a PDF (o generar PDF desde cero) es una opción para usted, la impresión de un PDF le daría el WYSIWYG más real, tanto en pantalla como en papel.
Aunque no puede cambiar el DPI físico, * puede * cambiar el software que asigna las medidas a píxeles, que se rige por software, que tiene un valor arbitrario, generalmente sondeado desde el monitor a través de EDID, pero puede ser anulado. Que es lo que creo que estaba recibiendo el OP. –
No, hay muchos casos en los que es útil conocer las propiedades físicas como el DPI y las dimensiones de la pantalla desde el software, incluso desde un nivel tan alto como Javascript. Los diseñadores de API que no exponen algo tan obvio porque no pueden pensar en un caso en el que se necesitan deben carecer de previsión y tener delirios de omnisciencia. –
@Glenn Maynard: Sí, de hecho, Android admite DIP (píxeles independientes del dispositivo) en su API de gráficos. La biblioteca de rasterización de nivel inferior traduce DIP a píxeles reales en función del PPP conocido de la pantalla. –