Avant de poursuivre, permettez-moi de m'excuser : je sais que vous avez exprimé une légère préférence pour Javascript par rapport à AppleScript. Cependant, mon Javascript est pants, alors que je sais déjà comment l'accomplir à l'aide de ce dernier, et il fournit définitivement un moyen d'obtenir des données d'image du presse-papiers directement à partir de la ligne de commande.
L'instruction suivante (répartie sur quatre lignes pour faciliter la lecture) prend l'image dans le presse-papiers et l'enregistre dans un fichier dont le nom correspond à la date et à l'heure actuelles, situé dans votre répertoire de travail actuel :
osascript -e "tell application \"System Events\" to ¬
write (the clipboard as JPEG picture) to ¬
(make new file at folder \"$(pwd)\" with properties ¬
{name:\"$(date +%Y-%m-%d\ at\ %H.%M.%S).jpg\"})"
Si vous choisissez d'utiliser cette méthode, je vous suggère de créer un alias ou une fonction à l'intérieur duquel ou de laquelle vous pouvez appeler en tapant le nom de la fonction +/- un paramètre si vous voulez spécifier le nom du fichier manuellement (avec une petite modification de la partie finale de la commande ci-dessus où le nom du fichier est déclaré).
EDIT : Je me suis lancé et j'ai écrit un shell script qui fait tout cela pour vous :
#!/bin/bash
# Filename: SaveMyScreenshot (executable)
# Author: CK 2017
# ----------------------------------------------------
# Takes a screenshot to the clipboard then saves the
# clipboard image to a file in jpeg format.
#
# Usage: SaveMyScreenshot [[path/]filename]
#
# If no filename is specified, the image will be saved
# to the present working directory and named using the
# current date and time. If more than one argument is
# given, all but the first argument are ignored.
#
# e.g.
#
# SaveMyScreenshot
#
# SaveMyScreenshot ~/Desktop
#
# SaveMyScreenshot ~/Desktop/foo.jpg
# ----------------------------------------------------
screencapture -c
folder=$(pwd)
filename=$(date +%Y-%m-%d\ at\ %H.%M.%S).jpg
if [ $# -ne 0 ]; then
if [[ -d $1 ]]; then
if [ "$1" != "." ]; then folder=$1; fi
else
a=$(dirname "$1")
b=$(basename "$1" .jpg)
if [ "$b" != "" ]; then filename=$b.jpg; fi
if [ "$a" != "." ]; then folder=$a; fi
fi
fi
osascript -e "tell application \"System Events\" to ¬
write (the clipboard as JPEG picture) to ¬
(make new file at folder \"$folder\" ¬
with properties {name:\"$filename\"})"
Il peut être copié et collé dans un fichier texte appelé "SaveMyScreenshot", rendu exécutable en exécutant la commande suivante chmod +x /path/to/SaveMyScreenshot
sur Terminal puis déplacé vers l'un des répertoires spécifiés dans la rubrique $PATH
(J'utilise /usr/local/bin ).
A partir de là, vous pouvez simplement taper SaveMyScreenshot
comme vous le feriez pour toute autre commande dans Terminal .
P.S. N'oubliez pas de commenter ou de supprimer la ligne dans le script qui prend la capture d'écran ( screencapture -c
). Je pense que vous avez votre propre méthode préférée pour obtenir votre capture d'écran, et je ne l'ai indiquée que pour mes propres tests et pour être complet au cas où quelqu'un d'autre trouverait cette réponse utile dans un contexte plus général.