15 votos

¿Cómo puedo pegar una captura de pantalla de la imagen desde el portapapeles en una carpeta?

Mis capturas de pantalla ir directamente a mi portapapeles, lo que funciona para mí la mayoría de las veces, así que no estoy tratando de cambiar ese comportamiento.

Lo que quiero hacer es pegar dijo captura de pantalla en una carpeta de mi elección.

Finder no se parecen a dejar que me pegue mi capturas de pantalla de mi portapapeles en carpetas, así que ahora estoy buscando una solución que utiliza como pocos pasos como sea posible.

El subóptima de Enfoque: he descubierto que puedo abrir estas imágenes de mi portapapeles en la vista previa, pero luego tengo que volver a guardarlos en la carpeta deseada, que es demasiado engorroso para ser considerada una solución.

Lo que estoy buscando: Algo con menos pasos que el enfoque anterior. Sólo necesito para obtener la imagen de mi portapapeles en una carpeta de mi elección. Si usted puede hacer mejor, te vas a ahorrar a mí y a otros con un montón de tiempo.

5voto

Joel Puntos 112

Editar/Re-Escritura # 2:

Mis anteriores respuestas eran incorrectas, y mientras la solución de problemas, nuevo (y probablemente mejor) de las respuestas se han publicado. Sin embargo, por fin he conseguido una respuesta correcta, así que me lo voy a publicar. Lo he probado con capturas de pantalla en mi 10.15.4 sistema, y que funcionaba bien en mi (limitada) de la prueba. Como ya había respuestas a esta pregunta, que requiere sólo una mínima adaptación, yo basó en gran medida de ellos - este, y este en particular, publicado por @CJK.

Esta respuesta requiere el uso de la línea de comandos. Utiliza únicamente los recursos que son nativas a macOS 10.15.4, y no hay soluciones ofrecidas. Esto es lo que hice:

Inicio de la Terminal de la aplicación y, a continuación, a partir de la cáscara (zsh) indicador (%) iniciar el editor de su elección para abrir el ~/.zshrc archivo en su "casa" ($HOME) directorio. He usado nano aquí:

% nano ~/.zshrc

Cuando se abre el editor, usted puede tener sólo un archivo vacío - eso está bien. Si hay algo en el archivo, sólo tiene que mover el punto de inserción al final del archivo y, a continuación, copie y pegue el siguiente texto en el editor:

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

Guarde el archivo y salga del editor. Ahora ha creado una función de shell llamado pss (para paste sin scaliente).

Antes de poder utilizar esta función shell, necesitará source este cambio zsh (un cierre de sesión/login, o reinicio lograr la misma cosa, pero esto es más fácil):

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

Tomar una captura de pantalla de como lo hayas configurado ahora con la salida de ir al portapapeles.

Por último, el uso de la pss función para copiar/guardar la captura de pantalla a un archivo en la ubicación deseada:

% pss /Users/yourid/yourfolder

Un par de notas:

  1. El nombre de archivo se ha establecido en la pss función para aproximar el nombre de archivo predeterminado que utiliza el sistema para capturas de pantalla. Si usted desea cambiar, modifique la siguiente línea:
filename="Screen Shot $(date +%Y-%m-%d\ at\ %H.%M.%S).png"
  1. Usted no necesita siempre especificar la ubicación de la carpeta. Si usted cd el directorio en el que desea guardar sus archivos de captura de pantalla, usted puede simplemente ejecutar la pss función sin argumentos. Por ejemplo, usted desea guardar la captura de pantalla de los archivos de a /Home/user/screenshots:
% cd /Home/user/screenshots
# make your screenshot
% pss
# the screenshot file is created in this (the `pwd`) directory

3voto

Talos Potential Puntos 45

He creado un automator flujo de trabajo para solucionar este problema

Línea de base: la solución le permite guardar una imagen desde el portapapeles en cualquier lugar con una pulsación de tecla (usted tiene que demostrar de dónde ir en la caja de diálogo, obviamente)

El flujo de trabajo se abre la vista previa, crea un archivo nuevo desde el portapapeles, y guarda el archivo (abrir la caja de diálogo guardar como). Luego puedes ponerlo donde quieras. Aquí está el enlace a un zip con el flujo de trabajo. Para ejecutar el flujo de trabajo, usted probablemente tendrá que aprobar automator con ciertos permisos (aparecerá si y pedir la aprobación, así que no te preocupes si no se ejecuta en este problema). Abrir el zip, a continuación, haga doble clic en el archivo (asegúrese de que no hay una imagen en el portapapeles). Un nuevo archivo debe abrirse en la vista previa y solicitar ser salvos.

Para crear un acceso directo, sólo tiene que ir a 'teclado' en preferencias del sistema > 'accesos directos' > 'servicios' y configurar el acceso directo.

1voto

user3439894 Puntos 5883

En la ocasión, yo también tengo la imagen gráfica de los datos a partir de una captura de pantalla en el portapapeles y lo he usado muy versión simplificada del ejemplo de AppleScript código mostrado más abajo para escribir a un archivo de disco. Sin embargo, he reescrito es así que todo lo que tiene que hacer es establecer el valor de dos variables, leer los comentarios en el código, a continuación, guardar la secuencia de comandos usando el Editor de secuencias de Comandos. A continuación, puede desencadenar de un método abreviado de teclado para utilizar una aplicación como FastScripts o similar.

De esta manera usted no necesita dar a cada aplicación que tiene el foco independiente permiso para ejecutarlo, como usted si usted utiliza un Automator Servicio/QuickAction conjunto para cualquier aplicación. (O usted podría poner a una aplicación, por ejemplo, el Finder y, a continuación, sólo se desencadenan a partir de allí.)

FastScripts es gratuito para hasta 10 atajos de teclado. Tenga en cuenta que no estoy afiliado con el desarrollador de este producto, sólo un usuario satisfecho.

Guarde el siguiente ejemplo AppleScript código como un script llamado por ejemplo, Escribir Portapapeles la Imagen Gráfica de los Datos a un Archivo, a continuación, asignarle un atajo de teclado en FastScripts, he utilizado ⇧⌘6, y empezar a utilizarlo. Tenga en cuenta que también se puede utilizar en Ejecutar el Shell Script de acción en un Automator Servicio/QuickAction si quieres, pero FastScripts es el camino a seguir.

Si desea codificar una ubicación, en lugar de elegir la carpeta de diálogo, sólo hágamelo saber y yo podemos cambiar el código.

Lo que este ejemplo de AppleScript código no:

  • Comprueba el portapapeles para ver si contiene la imagen gráfica de datos y si no se informa al usuario.
  • Si el portapapeles contiene la imagen gráfica de los datos de un elegir la carpeta de diálogo se abre.
  • Seleccione la ubicación para guardar el gráfico de los datos de la imagen desde el portapapeles a archivo, y lo hace, a menos que usted no tiene permiso de escritura a la ubicación, se le advierte y, a continuación, elija nuevo.
  • La convención de nomenclatura es, por ejemplo: captura de Pantalla 2020-05-21 en 9.34.29 PM.png

Ejemplo de AppleScript código:

--  #
--      ### 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

Nota: El ejemplo de AppleScript código es sólo eso y no contiene ningún adicionales de control de error como puede ser apropiado. La responsabilidad recae sobre el usuario para agregar cualquier error de manipulación como puede ser apropiado, necesitaba o quería. Echa un vistazo al tratar de instrucción y de error de instrucción en la Guía de Lenguaje de AppleScript. Véase también el Trabajo con los Errores. Además, el uso de la demora de comandos puede ser necesaria entre los eventos donde apropiada, por ejemplo delay 0.5, con el valor de la demora establecido de forma adecuada.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X