Prendre une capture d'écran en ligne de commande sous Windows

51

Je cherche un moyen de prendre une capture d'écran de tout l'écran à partir de la ligne de commande. Le système d'exploitation est Windows. Quelque chose comme ça:

C:\>screenshot.exe screen1.png
Željko Filipin
la source
1
Pourquoi voudriez-vous faire quelque chose comme ça? Mis à part le défaut évident (pouvoir prendre des captures d'écran uniquement de la ligne de commande sur laquelle vous travaillez actuellement), qu'est-ce qui ne va pas avec les solutions "classiques" utilisées à cette fin?
Rook
7
Pourquoi serait-il limité à prendre une photo de la ligne cmd uniquement? Je pense que la question va plus dans le sens de l'automatisation.
Gerd Klima
Eh bien, au moment où il veut faire une capture d'écran, il doit appuyer sur entrée pour donner la commande, n'est-ce pas? Il pourrait bien sûr utiliser un script pour l'activer dans le temps, mais ensuite, il réinvente réellement l'eau chaude.
Rook
Je voudrais écrire un script qui ouvre un fichier eml dans Thunderbird, prend une capture d'écran, ouvre un autre fichier, prend une autre capture d'écran ... Pour tous les fichiers d'un dossier. Je veux exécuter l'outil de capture d'écran à partir de la ligne de commande afin qu'il puisse être automatisé. Juste pour être clair, je ne veux pas prendre une capture d’écran de la ligne de commande, mais de tout l’écran. En fait, j'ai déjà écrit le script, je cherche juste plus d'options pour prendre la capture d'écran.
Željko Philippin
2
@ Idias: tout d'abord, l'écran est plus grand qu'une boîte CMD, mais ensuite: lorsqu'un script lance un outil graphique, cet outil graphique est actif. Donc, votre "déficience évidente" n’est pas évidente, et aucune déficience non plus. Avez-vous déjà travaillé avec la ligne de commande?
tvCa

Réponses:

26

Téléchargez imagemagick . De nombreux outils de manipulation d'images en ligne de commande sont inclus. L'importation vous permet de capturer tout ou partie d'un écran et d'enregistrer l'image dans un fichier. Par exemple, pour enregistrer l’ensemble de l’écran au format jpeg:

import -window root screen.jpeg

Si vous souhaitez utiliser la souris pour cliquer dans une fenêtre ou sélectionner une région d'écran et enregistrer un fichier png, utilisez simplement:

import box.png
DaveParillo
la source
13
Cela ne semble pas fonctionner sous Windows. Je reçois une erreur de serveur X à propos du fichier non trouvé.
Phile binaire
2
@BinaryPhile Oui, je pense que cela ne fonctionnerait qu'avec un serveur X fonctionnant sous Cygwin.
CMCDragonkai
Cela ne fonctionne toujours pas pour moi. Je reçois une capture d'écran, mais seules les applications X apparaissent (comme prévu).
Reinierpost
hm, ImageMagick fait 25 Mo, et fait des tonnes de choses intéressantes. screenCapture.bat, ci-dessous, mesure 9 Ko et fait simplement exactement ce que l'OP a demandé. À 0,04% de la taille d'ImageMagick.
johny pourquoi
41

On a déjà répondu à cette question, mais je pensais l'inclure également. NirCmd (un logiciel gratuit, malheureusement, pas open source) peut prendre des captures d'écran depuis la ligne de commande, en conjonction avec les nombreuses autres fonctions qu'il peut effectuer.

Exécutez ceci à partir de la ligne de commande dans le répertoire de nircmd.exe ou si vous l'avez copié dans votre dossier system32:

nircmd.exe savescreenshot screen1.png

fait ce que tu veux. Vous pouvez aussi le retarder comme ceci:

nircmd.exe cmdwait 2000 savescreenshot screen1.png

Cela attend 2000 millisecondes (2 secondes), puis capture et sauvegarde de la capture d'écran.

Zacharyliu
la source
Nircmdne supporte pas les écrans multiples. Il ne capturera que l'écran principal.
Thomas Weller
1
On dirait que les versions récentes peuvent faire plusieurs écrans. savescreenshotfull [nom du fichier]
w32sh
Je n'ai pas trouvé le lien de téléchargement pour nircmd2 au départ. La recherche Google n'a rien montré. Pour les utilisateurs cherchant à télécharger nircmd2, le lien de téléchargement se trouve tout en bas de la page nirsoft.net/utils/nircmd.html . Vous pouvez directement utiliser ce lien de téléchargement: nirsoft.net/utils/nircmd.zip
alpha_989
17

cela peut être fait sans outils externes (vous avez juste besoin d'installer le framework .net, qui est installé par défaut sur tout ce qui se trouve dans vista ou au-dessus) - screenCapture.bat . C'est un programme Cc auto-compilé et vous pouvez enregistrer la sortie dans quelques formats et ne capturer que la fenêtre active ou la totalité de l'écran:

screenCapture- captures the screen or the active window and saves it to a file
Usage:
screenCapture  filename.format [WindowTitle]

filename - the file where the screen capture will be saved
format - Bmp,Emf,Exif,Gif,Icon,Jpeg,Png,Tiff and are supported - default is bmp
WindowTitle - instead of capturing the whole screen will capture the only a window with the given title if there's such

Exemples:

call screenCapture notepad.jpg "Notepad"
call screenCapture screen.png
npocmaka
la source
2
Certainement la meilleure solution. Super-minuscule 9K! C'est 0,04% de la taille d'ImageMagick (25 Mo). Il utilise la fonctionnalité Windows intégrée. Plus petit que toutes les autres solutions sur cette page. Meilleur!
johny pourquoi
1
Une chose que j'ai remarquée à propos de cette solution est qu'il y a des éléments spécifiques qui ne sont pas capturés. Par exemple, certaines applications s’attachent et créent des problèmes sur d’autres applications qui ne sont pas rendues dans l’image capturée. Dans ces cas extrêmes, j'ai trouvé que MiniCap fonctionne. Dans la plupart des cas, cette solution est la solution la plus rapide et la plus simple que vous puissiez trouver.
F1234k
Salut @ npocmaka, j'ai deux moniteur que le bureau est étendu sur eux. Je veux prendre une capture d'écran du bureau du deuxième moniteur. Mais votre programme prend juste des captures d'écran du bureau principal. Un truc?
mini
@ mini - vous pouvez éditer la partie c # du script en utilisant ceci . Je vais essayer d'ajouter ajouter ce week
npocmaka
@npocmaka, comme je ne suis pas familier avec C #, j'attendrai votre mise à jour. Merci beaucoup.
mini
13

D'autres suggestions sont acceptables - vous pouvez également essayer MiniCap, qui est gratuit et présente d'autres fonctionnalités telles que la dénomination flexible de fichiers et différents modes de capture: http://www.donationcoder.com/Software/Mouser/MiniCap/index.html

(disclaimer: je suis l'auteur de MiniCap).


la source
1
Ensuite, vous devez également être l'auteur de Screenshot Captor. Je l'ai trouvé une meilleure solution pour mes besoins. Je vous remercie!
jon3laze
1
C'est gratuit pour un usage personnel seulement. Pour une utilisation commerciale, une licence pour Screenshot Captor est nécessaire.
Thomas Weller
9

Essayez IrfanView .

Vous pouvez l'exécuter via la ligne de commande. Vous pouvez spécifier quelle fenêtre capturer - telle qu'une fenêtre entière ou seulement la fenêtre actuelle / active - et vous pouvez également effectuer des modifications de base telles que le renforcement, le rognage ou le redimensionnement des images.

Voici les options en ligne de commande , particulièrement intéressantes

i_view32 /capture=0 /convert=wholescreen.png
john liu
la source
6

Vous pouvez essayer l' outil Boxcutter :

usage: boxcutter [OPTIONS] [OUTPUT_FILENAME]

Saves a bitmap screenshot to 'OUTPUT_FILENAME' if given.  Otherwise, 
screenshot is stored on clipboard by default.

OPTIONS
  -c, --coords X1,Y1,X2,Y2    capture the rectange (X1,Y1)-(X2,Y2)
  -f, --fullscreen            fullscreen screenshot
  -v, --version               display version information
  -h, --help                  display help message
James
la source
Celui-ci prend en charge plusieurs moniteurs mais ajoute une zone noire supplémentaire dans la version 1.5
Thomas Weller
Pour ceux intéressés par la compacité, boxcutter n’est que de 22K pour le fichier plein écran .exe et de 502K pour le fichier .exe normal. C'est open-source. Ça marche bien pour moi.
frakman1
6

Screenshot-cmd prend une capture d'écran d'un bureau ou de toute fenêtre sélectionnée par son titre. Il est également possible de sélectionner un rectangle à capturer. Le résultat est stocké dans un fichier png. (dernière mise à jour en 2011)

LES OPTIONS:
    -wt WINDOW_TITLE
            Sélectionnez la fenêtre avec ce titre.
            Le titre ne doit pas contenir d'espace ("").
    -wh WINDOW_HANDLE
            Sélectionnez la fenêtre par sa poignée
            (representad en tant que chaîne hexagonale - fe "0012079E") 
    -rc Bas en haut à gauche
            Source de récolte. Si aucun WINDOW_TITLE n'est fourni
            (0,0) est le coin supérieur gauche du bureau,
            sinon si WINDOW_TITLE maches une fenêtre de bureau
            (0,0) est son coin en haut à gauche.
    -o FILENAME
            Nom du fichier de sortie, s'il n'y en a pas, l'image sera sauvegardée
            sous "screenshot.png" dans le répertoire de travail actuel.
    -h
            Affiche cette information d'aide.

Inspiré par: http://blog.mozilla.com/ted/2009/02/05/command-line-screenshot-tool-for-windows/

Bartek
la source
1
Ceci est open source, licence BSD. Très simple et petit - pour moi ce sont des avantages.
Jarekczek
2

Vous pouvez utiliser la Pillowbibliothèque python pour prendre des captures d'écran du moniteur principal.

Étape 1: installer un oreiller:

pip install -user pillow

Étape 2: Prenez des captures d'écran avec le code suivant:

from PIL import ImageGrab
img = ImageGrab.grab()
img.save('screenshot.bmp')
alpha_989
la source
1
J'ai d'abord essayé la solution imagemagic, mais quand j'ai vu ce morceau de code Python, je l'ai essayé dans une interface de ligne de commande Python interactive et une seconde plus tard, j'étais heureux! Merci!!
Domih
1

Vous pouvez utiliser le produit commercial Snapit pour prendre d’impressionnantes captures d’écran en ligne de commande.

Željko Filipin
la source
2
Il s’agit maintenant d’un produit commercial qui a besoin de .NET et n’est pas publié pour Windows 7 ++. Le lien indiqué dans la réponse renvoie HTTP 404.
Thomas Weller,
Oui, le dépôt GitHub n'existe pas.
alpha_989