【发布时间】:2010-11-06 03:12:15
【问题描述】:
有没有办法获取屏幕dpi?
我试过 Capabilities.screenDPI 但它坏了,它总是返回 72。
有什么想法吗?
非常感谢。
【问题讨论】:
有没有办法获取屏幕dpi?
我试过 Capabilities.screenDPI 但它坏了,它总是返回 72。
有什么想法吗?
非常感谢。
【问题讨论】:
假设您有 2 个显示器,17" 和 19",分辨率相同,1280x1024(我正好有这两个)。这意味着反映像素大小(或者准确地说,适合一英寸的像素数)的实际 DPI 对于这两个来说将是不同的 - 具有相同分辨率的较小显示器将具有更大的 DPI 值。
这意味着无法从 actionscript 或 javascript 中获取实际的 DPI。您也许可以获得以像素为单位的屏幕宽度(1280),但您无法以英寸为单位获得实际的显示器尺寸,因此您无法计算它。
我认为 windows 返回默认值 72 和 mac 96,但不幸的是这并不能反映实际值。
这意味着没有办法,例如,在所有显示器上制作一个 10 英寸宽的正方形:\
在 Windows 中,如果您正确安装了显示器驱动程序,也许您可以从显示器驱动程序获取 DPI(我想这是您可以从 ie 获得的东西)但在我看来,没有办法让它工作在所有浏览器/平台上。
【讨论】:
我一直无法完全理解为什么会这样,但这实际上是正确的。如果你想得到宽高信息,你可以使用Capabilities.screenX和Capabilities.screenY。
我相信您一定使用的是 Mac。 72 通常是 Mac 上的 dpi;在 Win 机器上,该值通常为 96。
以下引用对我帮助很大。这是来自http://www.scantips.com/no72dpi.html 的一篇关于 dpi 和屏幕分辨率的长文。该帖子仅与您的问题相关,但有关屏幕 dpi 工作原理的信息很有帮助。
您的网络浏览器报告说您的屏幕尺寸当前设置为 1440x900 像素(整个屏幕区域,而不仅仅是浏览器窗口)。因此,上面的每个 412x324 像素图像将出现在全屏的 412/1440 = 29% 宽度和 324/900 = 36% 高度(在您当前的视频设置下)。我可以很容易地保证这是真的,甚至不用在那里,但你可以自己在屏幕上查看。我希望这对您来说也很明显,因为视频系统就是这样工作的,您需要知道这一点。
更新:
经过一番研究——
如您所知,screenDPI 属性不会为您提供每英寸的实际像素数 - 您将在 800x600 时获得与在 1440x900 时相同的 screenDPI 值。如果您已经知道屏幕的尺寸(以英寸为单位),那么您可以计算实际的 ppi - 但是,当然,您无法从 ActionScript 获得该信息。在 IE 中,您可以从 JavaScript 中获取它,但这并没有多大帮助。
所以,据我所知,没有办法做到这一点。可能,您可以做一些疯狂的事情,例如使用 AS 截取您的应用程序的屏幕截图,然后将其与屏幕分辨率信息一起发送到服务器,然后让服务器对其进行分析,告诉您您的应用程序有多少英寸宽和高 - 并且因为您知道您的应用程序有多少像素宽和高,所以您可以计算每英寸的像素数。但是,我不知道服务器应用程序如何或是否会实现这一点。
希望有一种方法可以通过 JavaScript 获取此信息。我看过一些关于将 div 的宽度/高度设置为 1 英寸然后查询 offsetWidth/offsetHeight 的帖子,但这并不比 screenDPI 更好。有趣的是,我从这种方法得到 96(不管分辨率如何),即使我从 screenDPI 得到 72。
据我所知,如果不预先知道以英寸为单位的屏幕尺寸,就无法确定以英寸为单位的实际像素 - 而且您无法从浏览器中获取该信息。
无赖。
【讨论】: