如何获取R中的屏幕分辨率

问题描述 投票:0回答:5

如何获取屏幕分辨率(高度、宽度)(以像素为单位)?

windows r system screen resolution
5个回答
12
投票

您可以使用命令行界面来WMI

> system("wmic desktopmonitor get screenheight")
ScreenHeight  
900   

您可以使用

system

捕获结果
(scr_width <- system("wmic desktopmonitor get screenwidth", intern=TRUE))
# [1] "ScreenWidth  \r" "1440         \r" "\r"
(scr_height <- system("wmic desktopmonitor get screenheight", intern=TRUE))
# [1] "ScreenHeight  \r" "900           \r" "\r" 

对于多个屏幕,输出例如:

[1] "ScreenWidth  \r" "1600         \r" "1600         \r" ""

我们希望除了第一个和最后一个值之外的所有值都转换为数字

as.numeric(c(
  scr_width[-c(1, length(scr_width))], 
  scr_height[-c(1, length(scr_height))]
))
# [1] 1440  900

6
投票

使用 JavaScript 很简单:你只需要做

window.screen.height
window.screen.width

您可以使用 OmegaHat 中的 SpiderMonkey 包从 R 调用 JavaScript。


您还可以使用 Java 解决此问题,并使用 rJava 包来访问它。

library(rJava)
.jinit()
toolkit <- J("java.awt.Toolkit")
default_toolkit <- .jrcall(toolkit, "getDefaultToolkit")
dim <- .jrcall(default_toolkit, "getScreenSize")
height <- .jcall(dim, "D", "getHeight")
width <- .jcall(dim, "D", "getWidth")

6
投票

接受的答案不适用于 Windows 8 及更高版本。

使用这个:

system("wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value")

要获得向量中的屏幕分辨率,您可以将其实现为:

  suppressWarnings(
    current_resolution <- system("wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution /format:value", intern = TRUE)  %>%
      strsplit("=") %>%
      unlist() %>%
      as.double()
  )
  current_resolution <- current_resolution[!is.na(current_resolution)]

现在你将得到一个长度为 2 的向量:

> current_resolution
[1] 1920 1080

1
投票

在 Windows 上,您可以通过 GetSystemMetrics

SM_CXSCREEN 来调用
SM_CYSCREEN
。这将返回主显示器屏幕的宽度/高度(以像素为单位)。

DWORD dwWidth = GetSystemMetrics(SM_CXSCREEN);
DWORD dwHeight = GetSystemMetrics(SM_CYSCREEN);

0
投票

rpanel包有一个返回屏幕分辨率的函数:

rpanel::rp.screenresolution()
$width
[1] 1540

$height
[1] 845
© www.soinside.com 2019 - 2024. All rights reserved.