Как я могу получить разрешение экрана в R - PullRequest
11 голосов
/ 05 сентября 2011

Как узнать разрешение экрана (высота, ширина) в пикселях?

Ответы [ 4 ]

11 голосов
/ 06 сентября 2011

Вы можете использовать интерфейс с запятой для 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
4 голосов
/ 05 сентября 2011

Это просто с JavaScript: вы просто делаете

window.screen.height
window.screen.width

Вы можете вызывать JavaScript из R, используя пакет SpiderMonkey из OmegaHat .


Вы также можете решить эту проблему с помощью 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")
2 голосов
/ 10 декабря 2017

Принятый ответ не работает в 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 голос
/ 05 сентября 2011

В Windows вы можете позвонить GetSystemMetrics, передав SM_CXSCREEN и SM_CYSCREEN Возвращает ширину / высоту экрана основного монитора в пикселях.

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