Prima di continuare, permettetemi di scusarmi: so che avete espresso una leggera preferenza per Javascript su AppleScript. Tuttavia, il mio Javascript è pantaloni, mentre so già come farlo usando quest'ultimo, e sicuramente fornisce un modo per ottenere i dati di immagine dagli appunti direttamente dalla riga di comando.
Il seguente one-liner (distribuito su quattro righe solo per facilità di lettura) prenderà l'immagine dagli appunti e la salverà in un file con il nome impostato come data e ora correnti, che si trova nella tua attuale directory di lavoro:
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\"})"
Se scegli di utilizzare questo metodo, ti suggerisco di creare un alias / funzione per racchiuderlo all'interno, che puoi chiamare semplicemente digitando il nome della funzione +/- un parametro se vuoi specificare il nome del file manualmente (con un piccolo aggiustamento alla parte finale del comando precedente dove viene dichiarato il nome del file).
EDIT: sono andato avanti e ho scritto uno script di shell che fa tutto questo per te:
#!/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\"})"
Questo può essere copiato e incollato in un file di testo semplice chiamato "SaveMyScreenshot", reso eseguibile eseguendo il comando chmod +x /path/to/SaveMyScreenshot
in Terminale , quindi spostato in una delle directory specificate in $PATH
(Io uso / usr / local / bin ).
Da quel momento in poi, puoi semplicemente digitare SaveMyScreenshot
come faresti con qualsiasi altro comando in Terminale .
P.S. Non dimenticare di commentare o eliminare la riga nello script che prende lo screenshot ( screencapture -c
). Credo che tu abbia il tuo metodo preferito per ottenere il tuo screenshot e lo inserisco solo per i miei scopi di test e per completezza nel caso in cui qualcun altro possa trovare questa risposta utile in un contesto più generale.