2009-06-01 13 views
18

Bir web sayfasının kesin bir sayı biriminde (santimetre/inç) gösterilmesi için kullanıcının ekranının DPI'sini programatik olarak belirlemek istiyorum. Bunun garip bir istek olduğunu biliyorum: görselleştirme araştırma projesi için ve bu bir çeşit kontrol. Şu anda, kullanıcının ekrana bir kredi kartı koymasını ve yeniden boyutlandırılabilir bir div (Mootools aracılığıyla) ile gerçek kredi kartını eşleştirmesini ve biz de DPI'yı alabilmemizi ve sayfayı doğru gösterebilmemizi sağlıyoruz.DPI tarayıcı aracılığıyla programsal olarak belirlenir mi?

Bunu yapmak için programatik bir yol düşünen var mı?

+0

Olası yinelenen [JS/CSS sistem DPI/ÜFE algılama?] (http://stackoverflow.com/questions/279749/detecting-the-system-dpi-ppi-from -js-css) – Endless

cevap

3

Eğer bunu javascript/mootools içinde yapıyorsanız, CSS units arkadaşınız. Boyutları inç veya santimetre cinsinden veya hatta (bir inçin 1/72'si) olarak belirtebilirsiniz. Bu birimlerde boyutları belirtebilmeseniz bile her ne sebeple olursa olsun DPI'ya ihtiyacınız varsa, bilinen bir boyuta sahip olduğunuz ve yeniden boyutlandırılan piksel boyutundan hesapladığınız "yeniden boyutlandırılabilir" div boyutunu sadece boyutlandırın.

Düzenleme:

Maalesef puan, cm ve CSS birimleri fiziksel doğru değil. Sadece nispeten doğrudur. Bu benim ilk kez denedim ve çalışmadığını fark ettim ve CSS spesifikasyonunu kontrol ettim .. benim dehşet. - Brandon Pelfrey iyi bir nokta

; tarayıcılar, varsayılan bir DPI (72 veya 96'yı düşünüyorum) ve bununla başa çıkarak bunu gerçekleştirme eğilimindedir.

İstediğiniz gibi hassas boyutlandırmaya ihtiyacınız varsa, şansınız kalmadı. Hem tarayıcının açık olduğu monitörün mevcut çözünürlüğünü hem de o monitörün "görüntülenebilir ekran alanı" nı okumadan asla alamayacaksınız. Bunu Javascript yoluyla elde edemezsin.

Tarayıcıların yaptığı ve CSS birimlerine göre boyutlandırdığı varsayılan varsayımı yaptığınızı öneririm. Daha sonra, kullanıcılarınızın, belirtilen yöntemi kullanarak "boyutlandırmayı ayarlamasına" izin verebilirsiniz, ancak yalnızca gerekiyorsa . Bunu, kullanıcı oturumunun bir parçası olarak veya bir çerez olarak saklanan DPI hesaplamasıyla ayrı bir sayfada yapın. Alternatif olarak, Microsoft bir kez this bug'u düzelttiğinde, doğru ölçeklendirme için Silverlight'ın "aygıttan bağımsız ünitelerini" kullanabilirsiniz.

+1

Maalesef, CSS noktaları cm, ve cm cinsinden fiziksel olarak doğru değildir. Sadece nispeten doğrudurlar. Bu, çalıştığım ve CSS özelliklerinin kontrol edilmediğini fark edene kadar denediğim ilk şeydi. –

+1

CSS Birimleri bağlantısı şu anda: http://www.w3schools.com/cssref/css_units.asp – Christian

+0

Güncelleme, teşekkürler @Christian – Randolpho

2

Yapamazsınız. DPI, ekranın piksel çözünürlüğünün ve ekranın fiziksel boyutlarının bir fonksiyonudur. İkincisi, farkında olduğum herhangi bir tarayıcı arayüzünde mevcut değildir.

0

Kesin sonuçlar elde edemeyeceğinizi düşünüyorum - örneğin, resmi monitörü kullanarak yeniden boyutlandırabilirsiniz. Kullanıcı güdümlü yöntemle uğraşmayı tercih ederim, ancak siz yapabilirsiniz. İlk tahmini için ekran çözünürlüğünü tespit edin.

0

Hedef bilgisayarda çalışan kod içermeyen bir tarayıcıdan mümkün değil. Hedef bilgisayara bir şey yükleyebilecekseniz, bunu hesaplamak için monitör hakkında yeterince bilgi sahibi olabilirsiniz.

İlgili konular