Comment puis-je obtenir la résolution de l’écran en R

Comment puis-je obtenir la résolution de l’écran (hauteur, largeur) en pixels?

Vous pouvez utiliser une interface de ligne de commande pour WMI

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

Vous pouvez capturer le résultat avec le 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" 

Avec plusieurs écrans, la sortie est, par exemple,

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

Nous voulons toutes les valeurs sauf la première et la dernière, converties en nombres

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

C’est facile avec JavaScript: vous faites juste

 window.screen.height window.screen.width 

Vous pouvez appeler JavaScript à partir de R en utilisant le package SpiderMonkey d’ OmegaHat .


Vous pouvez également résoudre ce problème avec Java et utiliser le package rJava pour y accéder.

 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") 

La réponse acceptée ne fonctionne pas sous Windows 8 et versions ultérieures.

Utilisez ceci:

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

Pour obtenir la résolution de l’écran dans un vecteur, vous pouvez l’implémenter comme suit:

  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)] 

Maintenant, vous aurez un vecteur de longueur 2:

 > current_resolution [1] 1920 1080 

Sous Windows, vous pouvez appeler GetSystemMesortingcs transmettant SM_CXSCREEN et SM_CYSCREEN . Cela renvoie la largeur / hauteur de l’écran du moniteur d’affichage principal, en pixels.

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