Web ページの閲覧者数を 1 インチあたりのピクセル数で調べるにはどうすればよいですか?
質問
ユーザーの 1 インチあたりのピクセル数を調べる方法を誰か考えられますか?画像がWebブラウザに表示されることを確認したい その通り 必要なサイズなので、解像度(ユーザーエージェントから取得できる)とインチあたりのピクセル数の組み合わせを使用してこれを行うことができます。
ただし、理想的には JavaScript またはその他の非侵襲的な方法を使用して、ユーザーの 1 インチあたりのピクセル数を検出する方法があるかどうかはわかりません。
助言がありますか?
ありがとう、
CJ
解決
次の JavaScript 関数を使用して 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>
でも、必ず戻ってくると思うよ 96
Windows マシン上で。
私の知る限り、オペレーティング システムがビューポートの実際の物理的寸法を判断する方法はありません。したがって、ソフトウェアが実際の DPI を知ることは実際には不可能である可能性が非常に高いです。
ただし、専門家は、画面上の DPI が実際の DPI と一致していることを確認する部門もあります。そのような場合は、おそらく上記の JavaScript で十分でしょう。
注記:
上記のコードを、WinXP および Win2k 上の Opera 9、IE6 & 7、Firefox 3.6 でテストしました。
アップデート:
noCache パラメータを追加しました。しかし、効果があるかどうかは疑問です。上記の Windows バージョンの FireFox と Opera でズームを使用してテストしましたが、ズームの量に関係なく、DPI は「96」として引用され続けます。モバイルデバイスがこれをどう活用するかを見るのは興味深いでしょう。
他のヒント
あなたは昔の描画パッケージが行ったように行い、かつ伸縮性ルーラーを表示することができます。それは彼らが画面に対して置かれている物理的な支配者と一致するまで、ユーザーが仮想ルーラーをドラッグしています。
未本番用の深刻な提案、おそらく実際に正しい答えを得る唯一の方法:。(
最も安全かつ簡単にあなたがイメージをしたいどのようなサイズのブラウザを伝えることであろう。 CSSはインチとメトリックをサポートしていますので、あなたは、これらの例のいずれかのような画像を指定することができます:
<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" />
表示し、今日サポート96px /インチまたは72pixels /インチでます。
あなたはHTTPリクエストのUser-Agentヘッダを取得することができます。
User-Agent: Mozilla/5.0 (Linux; X11)
この1はあなたのオペレーティングシステムを教えてくれますし、ここからは、意思決定を行うことができます。
これは非常に厳しいかもしれ - あなたは何とか解像度に基づいてレンダリングされた画像を拡大縮小するために管理していても、どのようにあなたは直接彼のブラウザで画像を拡大縮小からユーザーを防ぐのですか?
あなたはフラッシュやSilverlightのようないくつかの豊富なインターフェース技術を検討していますか?彼らはあなたに追加のオプションを与えることがあります。