15 votes

Comment coller une capture d'écran du presse-papiers dans un dossier ?

Mes captures d'écran vont directement dans mon presse-papiers, ce qui me convient la plupart du temps, et je n'essaie donc pas de modifier ce comportement.

Ce que je veux faire, c'est coller cette capture d'écran dans un dossier de mon choix.

Le Finder ne semble pas me permettre de coller mes captures d'écran depuis mon presse-papiers dans des dossiers, alors je cherche une solution de contournement qui utilise le moins d'étapes possible.

L'approche sous-optimale : J'ai découvert que je pouvais ouvrir ces images à partir de mon presse-papiers dans Aperçu, mais je dois ensuite les réenregistrer dans le dossier souhaité, ce qui est trop lourd pour être considéré comme une solution.

Ce que je recherche : Quelque chose avec moins d'étapes que l'approche ci-dessus. J'ai juste besoin de récupérer l'image de mon presse-papiers dans un dossier de mon choix. Si vous pouvez faire mieux, vous nous ferez gagner beaucoup de temps, à moi et à d'autres.

5voto

Seamus Points 3171

Edition/Réécriture # 2 :

Mes premières réponses étaient erronées et, pendant que je cherchais des solutions, de nouvelles (et probablement meilleures) réponses ont été publiées. Néanmoins, j'ai finalement trouvé une réponse correcte, et je vais donc la publier. Je l'ai testée avec des captures d'écran sur mon système 10.15.4, et elle a fonctionné de manière fiable lors de mes tests (limités). Comme il y avait déjà des réponses à cette question qui ne nécessitaient qu'une adaptation mineure, je m'y suis fortement appuyé - celui-ci et celui-ci en particulier , tous deux postés par @CJK.

Cette réponse nécessite l'utilisation de la ligne de commande. Elle n'utilise que des ressources qui sont natif à MacOS 10.15.4, et aucune solution de contournement n'est proposée. Voici ce que j'ai fait :

Démarrer le Terminal puis à partir de l'interpréteur de commandes ( zsh ) invite ( % ), lancez l'éditeur de votre choix pour ouvrir le fichier ~/.zshrc dans votre "maison" ( $HOME ). J'ai utilisé nano ici :

% nano ~/.zshrc

Lorsque l'éditeur s'ouvre, il se peut que vous n'ayez qu'un fichier vide, ce qui n'est pas grave. Si le fichier contient quelque chose, il suffit de déplacer le point d'insertion à la fin du fichier puis copiez et collez le texte suivant dans l'éditeur :

function pss () {
    folder=$(pwd)
    filename="Screen Shot $(date +%Y-%m-%d\ at\ %H.%M.%S).png"

    if [ $# -ne 0 ]; then
        if [[ -d $1 ]]; then
            if [ "$1" != "." ]; then folder=$1; fi
        else
            a=$(dirname "$1")
            b=$(basename "$1" .png)

            if [ "$b" != "" ]; then filename=$b.png; fi

            if [ "$a" != "." ]; then folder=$a; fi
        fi
    fi

    osascript -e "tell application \"System Events\" to ¬
            write (the clipboard as «class PNGf») to ¬
            (make new file at folder \"$folder\" ¬
            with properties {name:\"$filename\"})"
}

Enregistrez le fichier et quittez l'éditeur. Vous avez maintenant créé un fonction d'obus nommée pss (pour p aste s créen s chaud).

Avant de pouvoir utiliser cette fonction d'obus Vous devrez source ce changement de zsh (une déconnexion/ouverture de session ou un redémarrage permet d'obtenir le même résultat, mais c'est plus facile) :

% . ~/.zshrc
# OR, ALTERNATIVELY:
% exec zsh

Faites une capture d'écran telle que vous l'avez configurée - avec la sortie dans le presse-papiers.

Enfin, utilisez la fonction pss pour copier/enregistrer la capture d'écran dans un fichier à l'emplacement de votre choix :

% pss /Users/yourid/yourfolder

Quelques remarques :

  1. Le nom du fichier a été défini dans le pss pour approximer le nom de fichier par défaut utilisé par le système pour les captures d'écran. Si vous souhaitez changer cela, modifiez la ligne suivante :

    filename="Screen Shot $(date +%Y-%m-%d\ at\ %H.%M.%S).png"

  2. Il n'est pas nécessaire de toujours spécifier l'emplacement du dossier. Si vous cd au répertoire dans lequel vous souhaitez enregistrer vos fichiers de capture d'écran, vous pouvez simplement exécuter la commande pss sans argument. Par exemple, vous souhaitez enregistrer vos captures d'écran dans le dossier /Home/user/screenshots :

    % cd /Home/user/screenshots

    make your screenshot

    % pss

    the screenshot file is created in this (the pwd) directory

3voto

Talos Potential Points 600

J'ai créé un automate flux de travail pour résoudre ce problème

En résumé : la solution vous permet d'enregistrer une image à partir du presse-papiers n'importe où en appuyant sur un seul bouton (vous devez lui indiquer où aller dans la boîte de dialogue d'enregistrement, évidemment).

Le flux de travail ouvre l'aperçu, crée un nouveau fichier à partir du presse-papiers et enregistre le fichier (en ouvrant la boîte de dialogue Enregistrer sous). Vous pouvez ensuite le placer où vous le souhaitez. Voici le flux de travail lien à un zip avec le flux de travail. Pour exécuter le flux de travail, vous devrez probablement approuver automator avec certaines permissions (il apparaîtra si et demandera l'approbation, donc ne vous inquiétez pas si vous ne rencontrez pas ce problème). Ouvrez le fichier zip, puis double-cliquez sur le fichier (assurez-vous qu'il y a une image dans le presse-papiers). Un nouveau fichier devrait s'ouvrir dans la prévisualisation et demander à être enregistré.

Pour créer un raccourci, il suffit d'aller dans "clavier" dans les préférences système > "raccourcis" > "services" et de configurer le raccourci.

1voto

user3439894 Points 52496

Il m'est arrivé, à moi aussi, de données graphiques d'un capture d'écran sur le presse-papiers et ont utilisé une version très dépouillée de l'application exemple AppleScript code illustré ci-dessous pour l'écrire sur un fichier disque. Cependant, je l'ai réécrit de manière à ce que vous n'ayez plus qu'à définir la valeur de deux variables lire les commentaires dans le code puis enregistrer le script en utilisant script Éditeur . Vous pouvez ensuite le déclencher à partir d'un raccourci clavier à l'aide d'une application telle que FastScripts ou similaire.

De cette façon, vous n'avez pas besoin de donner à chaque application qui a un focus séparé la permission de l'exécuter, comme vous le feriez si vous utilisiez un Automate Service/action rapide fixé à toute application . (Vous pouvez aussi vous contenter d'une seule application, par exemple Recherche et ne le déclenche qu'à partir de là).

FastScripts est gratuit jusqu'à 10 raccourcis clavier . Notez que je ne suis pas affilié au développeur de ce produit, je ne suis qu'un utilisateur satisfait.

Enregistrer ce qui suit exemple AppleScript code en tant que script nommé par exemple Écrire les données d'une image graphique du presse-papiers dans un fichier puis lui assigner un raccourci clavier en FastScripts J'ai utilisé 6 et commencez à l'utiliser. Notez que vous pouvez également l'utiliser dans un Exécuter le Shell script action dans un Automate Service/action rapide si vous le souhaitez, mais FastScripts est la voie à suivre.

Si vous voulez coder en dur un localisation au lieu d'un choisir un dossier dialogue Si vous n'êtes pas d'accord, faites-le moi savoir et je changerai le nom de l'article. code .

Qu'est-ce que cette exemple AppleScript code ne :

  • Vérifie le presse-papiers pour voir s'il contient données graphiques et, si ce n'est pas le cas, en informe l'utilisateur.
  • Si le presse-papiers contient données graphiques a choisir un dossier dialogue s'ouvre.
  • Choisir le localisation pour sauvegarder le données graphiques de la presse-papiers a fichier et c'est le cas, sauf si vous n'avez pas de autorisation d'écriture à cela localisation On vous avertit et vous choisissez à nouveau.
  • Les convention d'appellation est, par exemple : Capture d'écran 2020-05-21 à 9.34.29 PM.png

Exemple AppleScript code :

--  #
--      ### Write Clipboard Graphic Image Data to File ###
--  #
--  # This example AppleScript code will write graphic image data in its normal form on the clipboard to disk file.
--  # All you need to do is set the value of the fileExtension variable to the type of graphic image file you want.
--  # Then when the script runs, a choose folder dialog box will appear, you select a location and click the Choose button.
--  # The graphic image data in its normal form on the clipboard is written to disk file with the following naming convention:
--  # 'Screen Shot 2020-05-21 at 9.34.29 PM.fileExtension' e.g. 'Screen Shot 2020-05-21 at 9.34.29 PM.png'

--  # Set the value of the fileExtension variable 
--  # to the type of graphic image file you want.
--  # 
--  # Valid values are: png, jpg, tiff, gif

set fileExtension to "png"

--  # The defaultChooseFolderLocation is the default
--  # location the choose folder dialog opens to.
--  # It can be any properly formed AppleScript 
--  # 'path to (folder)', or use a fully qualified POSIX path.

set defaultChooseFolderLocation to path to (pictures folder)

--  ########################################
--  ## Do Not Edit Below Unless You Know What You Are Doing. ##
--  ########################################

--  # With the exception of the file naming convention, the rest 
--  # of the code is tokenized and should not need to be edited.
--  # Obviously though, feel free to edit it if you so choose.

if fileExtension is equal to "png" then
    set imageType to «class PNGf»
else if fileExtension is equal to "jpg" then
    set imageType to JPEG picture
else if fileExtension is equal to "tiff" then
    set imageType to TIFF picture
else if fileExtension is equal to "gif" then
    set imageType to GIF picture
else
    display dialog "The file extension set is not recognized!" buttons {"OK"} ¬
        default button 1 with title "Write Clipboard Graphic Image Data to File" with icon stop
    return
end if

if ((clipboard info) as string) contains imageType then
    my chooseLocationAndWriteFile(imageType, fileExtension, defaultChooseFolderLocation)
else
    display dialog "The clipboard does not contain graphic image data!" buttons {"OK"} ¬
        default button 1 with title "Write Clipboard Graphic Image Data to File" with icon caution
end if

--  ## Handler(s) ##

on chooseLocationAndWriteFile(imageType, fileExtension, defaultChooseFolderLocation)
    set cbImage to (the clipboard as imageType)
    set fileName to do shell script ¬
        "echo $(date '+Screen Shot %Y-%m-%d% at %l.%M.%S %p." & fileExtension & "')"
    set saveToLocation to POSIX path of (choose folder with prompt ¬
        "Choose the Folder to save the clipboard image to..." default location ¬
        defaultChooseFolderLocation)
    set imageFile to saveToLocation & fileName
    my writeToFile(cbImage, imageFile, true, imageType, fileExtension)
end chooseLocationAndWriteFile

on writeToFile(theData, theFile, overwriteExistingContent, imageType, fileExtension)
    try
        set theOpenedFile to open for access POSIX file theFile with write permission
        if overwriteExistingContent is true then set eof of theOpenedFile to 0
        write theData to theOpenedFile starting at eof
        close access theOpenedFile
    on error eStr number eNum
        try
            close access file theFile
        end try
        if eNum is equal to -5000 then
            display dialog ¬
                "You do not have write permission to this location!" buttons {"OK"} ¬
                default button 1 with title "File I/O Error..." with icon stop
            my chooseLocationAndWriteFile(imageType, fileExtension, defaultChooseFolderLocation)
        else
            display dialog eStr & " number " & eNum ¬
                buttons {"OK"} default button 1 ¬
                with title "File I/O Error..." with icon stop
        end if
        return
    end try
end writeToFile

Note : Le <em>exemple </em><strong>AppleScript </strong><em>code </em>n'est rien d'autre que cela et ne contient pas d'éléments supplémentaires. <em>traitement des erreurs </em>le cas échéant. Il incombe à l'utilisateur d'ajouter toute <em>traitement des erreurs </em>selon ce qui est approprié, nécessaire ou souhaité. Consultez le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayer </strong></a><em>déclaration </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur </strong></a><em>déclaration </em>dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du langage AppleScript </strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec des erreurs </strong></a><strong>. En outre, l'utilisation du <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>délai </strong></a><em>commande </em>peut être nécessaire entre les événements, le cas échéant, par exemple <code>delay 0.5</code> , avec le <em>valeur </em>de la <em>délai </em>de manière appropriée.</strong>

1voto

Jannik Arndt Points 121

J'ai combiné L'approche de l'utilisateur3439894 avec Automator. Résultat : ^ + + + v pour coller le presse-papiers dans le dossier en cours .

Étape 1

Créer une nouvelle "action rapide" dans Automator.app et ajouter ce qui suit Run AppleScript bloc : enter image description here

set imageType to «class PNGf»

if ((clipboard info) as string) contains imageType then
    set theData to (the clipboard as imageType)

    -- path
    tell application "Finder" to set saveToLocation to (target of front Finder window) as text

    -- filename
    set fileName to do shell script ¬
        "echo $(date '+Screen Shot %Y-%m-%d% at %l.%M.%S %p.png')"

    set imageFile to saveToLocation & fileName

    try
        set theOpenedFile to open for access imageFile as «class furl» with write permission
        set eof of theOpenedFile to 0
        write theData to theOpenedFile starting at eof
        close access theOpenedFile
    on error eStr number eNum
        try
            close access file imageFile
        end try
        if eNum is equal to -5000 then
            display dialog ¬
                "You do not have write permission to this location!" buttons {"OK"} ¬
                default button 1 with title "File I/O Error..." with icon stop
            my chooseLocationAndWriteFile(imageType, fileExtension, defaultChooseFolderLocation)
        else
            display dialog eStr & " number " & eNum ¬
                buttons {"OK"} default button 1 ¬
                with title "File I/O Error..." with icon stop
        end if
        return
    end try

else
    display dialog "The clipboard does not contain graphic image data!" buttons {"OK"} ¬
        default button 1 with title "Write Clipboard Graphic Image Data to File" with icon caution
end if

Enregistrez l'action dans le dossier iCloud par défaut.

Étape 2

Dans Paramètres système > Clavier > Raccourcis > Services, la nouvelle action rapide devrait apparaître :

enter image description here

L'ajout d'un raccourci ici n'a pas fonctionné pour moi, alors

Étape 3

Dans la section "Raccourcis d'application", ajoutez-en un avec l'extension exactes nom de votre fichier :

enter image description here

C'est tout !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X