簡體   English   中英

如何在R中獲得屏幕分辨率

[英]How can I get the screen resolution in R

如何獲得屏幕分辨率(高度,寬度)(以像素為單位)?

您可以使用commad-line接口到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

使用JavaScript很容易:你就是這么做的

window.screen.height
window.screen.width

您可以使用OmegaHatSpiderMonkey包從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")

接受的答案在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

在Windows上,您可以調用GetSystemMetrics傳遞SM_CXSCREENSM_CYSCREEN 這將返回主顯示監視器屏幕的寬度/高度(以像素為單位)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM