Pregunta

¿Puede alguien pensar en una manera de que pueda descubrir un usuarios de píxeles por pulgada? Quiero asegurar que se despliega la imagen en un navegador web exactamente el tamaño que necesitan para, por lo que el uso de una combinación de la resolución (que yo puedo llegar desde el agente de usuario) y los píxeles por pulgada que podía hacer esto.

Sin embargo, no estoy seguro de si hay alguna manera de descubrir a los usuarios píxeles por pulgada, lo ideal es usar JavaScript o algún otro método no invasivo.

¿Alguna sugerencia?

Gracias,

CJ

¿Fue útil?

Solución

Se puede usar la siguiente función javascript para obtener el DPI.

<script type="text/javascript">
   var dpi = {
      v: 0,
      get: function (noCache) {
         if (noCache || dpi.v == 0) {
            e = document.body.appendChild(document.createElement('DIV'));
            e.style.width = '1in';
            e.style.padding = '0';
            dpi.v = e.offsetWidth;
            e.parentNode.removeChild(e);
         }
         return dpi.v;
      }
   }

    alert(dpi.get(true));  // recalculate
    alert(dpi.get(false)); // use cached value
</script>

Sin embargo, creo que siempre devolverá 96 en máquinas Windows.

Por lo que yo sé, no hay manera para que el sistema operativo para determinar las dimensiones físicas de la ventana gráfica. Por lo tanto, podría muy bien ser que en realidad es imposible que el software para conocer la vida real DPI.

Sin embargo, los profesionales son ciertas ramas asegurarse de que el DPI en la pantalla coincide con el de la vida real DPI. En los caso el javascript anterior, probablemente sería suficiente.

Nota:
Probado el código anterior en Opera 9, Internet Explorer 6 y 7 y Firefox 3.6 en WinXP y Win2K.

Actualización:
Se ha añadido el parámetro NoCache. Pero lo dudo tendrá ningún efecto. Lo he comprobado con zoom en Firefox y Opera en las versiones de Windows mencionadas anteriormente y que mantener citando el DPI como '96', independientemente de la cantidad de zoom. Sería interesante ver qué dispositivos móviles hacen de este.

Otros consejos

Se podría hacer lo que hicieron los paquetes de dibujo de edad, y mostrar una regla extensible. Haga que sus usuarios arrastrar la regla virtual hasta que coincida con una regla física que han puesto contra la pantalla.

No es una sugerencia seria para uso en producción, pero probablemente la única manera de conseguir realmente la respuesta correcta:. (

El más seguro y más fácil sería para decirle al navegador qué tamaño que desee la imagen. CSS apoya pulgadas y métricas, lo que podría especificar la imagen al igual que cualquiera de estos ejemplos:

<img src="image.png" style="width:15cm;height:10cm;" alt="Centimeters" />
<img src="image.png" style="width:5.9in;height:3.9in;" alt="Inches" />
<img src="image.png" style="width:150mm;height:100mm;" alt="Millimeters" />

Muestra hoy el soporte 96px / pulgada o 72pixels / pulgada .

Usted puede obtener el encabezado de solicitud HTTP User-Agent

User-Agent: Mozilla/5.0 (Linux; X11)

éste le dirá que el sistema operativo y desde aquí se puede tomar una decisión.

Esto puede ser muy difícil - incluso si se las arreglan para escalar la imagen renderizada basado en ppp, ¿cómo evitar que el usuario escalar la imagen en su navegador directamente?

¿Ha pensado en algunas tecnologías de interfaz ricos como Flash o Silverlight? Se le puede dar opciones adicionales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top