Frage

denken kann jemand eine Möglichkeit, ich einen Benutzer Pixel pro Zoll entdecken? Ich möchte sicherstellen, dass ein Bildanzeigen in einem Web-Browser genau die Größe Ich brauche es, so eine Kombination aus Auflösung verwenden und Pixel pro Zoll (was ich aus dem User-Agent bekommen kann) ich tun könnte, dies.

Allerdings bin ich nicht sicher, ob es eine Möglichkeit ist, einen Benutzer Pixel pro Zoll zu entdecken, am besten mit JavaScript oder eine andere nicht-invasive Methode.

Irgendwelche Vorschläge?

Danke,

CJ

War es hilfreich?

Lösung

Sie können die folgende JavaScript-Funktion verwenden, um die DPI zu erhalten.

<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>

Aber ich denke, es ist immer 96 auf Windows-Rechner zurück.

Soweit ich weiß, gibt es keine Möglichkeit für das Betriebssystem, die tatsächlichen physikalischen Abmessungen des Ansichtsfensters zu bestimmen. So könnte es sehr gut sein, dass es eigentlich unmöglich ist, Software, um die realen DPI zu kennen.

Allerdings ist es, Fachleute bestimmte Zweige sicher, dass die auf dem Bildschirm übereinstimmt DPI die realen DPI. In diesem Fall würde die oben Javascript wahrscheinlich ausreichend sein.

Hinweis:
Getestet den obigen Code in Opera 9, IE6 und 7 und Firefox 3.6 auf WinXP und Win2k.

Update:
die nocache param hinzugefügt. Aber ich bezweifle, es wird keine Wirkung haben. Getestet habe ich es mit Zoom in FireFox und Opera auf den oben genannten Windows-Versionen und sie halten die DPI als ‚96‘ zu zitieren, unabhängig von der Menge des Zoom. Wäre interessant zu sehen, was mobile Geräte daraus machen.

Andere Tipps

Sie können tun, wie die Zeichnungspakete der alten tat, und eine dehnbare Lineal anzuzeigen. Haben Sie Ihre Benutzer die virtuelle Lineal ziehen, bis sie einen physischen Herrscher passt sie gegen den Bildschirm gesetzt haben.

Nicht ein ernsthafter Vorschlag für die produktiven Einsatz, aber wahrscheinlich den einzige Weg, um tatsächlich die richtige Antwort. (

Die sicherste und am einfachsten wäre es, den Browser zu sagen, welche Größe Sie das Bild wollen. CSS unterstützt Zoll und Metriken, so könnten Sie das Bild wie jedes dieser Beispiele angegeben werden:

<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" />

Displays unterstützen heute 96px / inch oder 72pixels / inch .

Sie können die HTTP-Request-User-Agent-Header erhalten

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

Diese werden Sie das Betriebssystem sagen, und von hier aus können Sie eine Entscheidung treffen.

Dies kann sehr hart sein - auch wenn man es irgendwie schaffen das gerenderte Bild auf dpi basierend zu skalieren, wie verhindern Sie den Benutzer aus Skalieren des Bildes in seinem Browser direkt?

Haben Sie einige reiche Schnittstellen-Technologien wie Flash oder Silverlight in Betracht gezogen? Sie können Sie zusätzliche Optionen geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top