repita el código de acción en Sierra?

1

¿Podría ayudarme a arreglar el siguiente script?

Tengo un código de acción que uso dentro de Automator para rellenar cualquier imagen de tamaño arrojada en un lienzo cuadrado. En otras palabras, no necesita alimentarlo con las dimensiones literales del lado más largo y luego decirle que coincida con la otra dimensión con los mismos píxeles. (Para 3000 imágenes que llevaría tanto tiempo como exportar cada una manualmente).

Hasta Sierra, esta secuencia de comandos funcionaría para cualquier número de imágenes que le lancé, ya sea que le dijera a Automator que actúe sobre imágenes seleccionadas, imágenes dentro de una carpeta o si especifico las imágenes desde Automator. Ahora, cuando comienza la secuencia de comandos, se abre una ventana del Finder que me solicita que seleccione un solo elemento. (Y la selección de múltiplos desde esta ventana no solucionará el problema, ya que el script busca procesar un elemento por iteración). En otras palabras, el script se ejecuta una vez y luego termina. Me gustaría saber cómo hacer que se ejecute para la cantidad de elementos que necesito, y me gustaría saber cómo hacer que el script funcione sin solicitar elementos desde una ventana del Finder, especialmente si ya usé Get from within Automator para elegir los elementos en cuestión.

Por lo tanto, está claro que el script se está comportando de manera diferente ahora, no el flujo de trabajo en Automator. Y para probar esto, el script podría ejecutarse con la misma facilidad desde el Editor de AppleScript, pero hace lo mismo.

Aquí está el script en cuestión:

set this_file to choose file without invisibles
-- indicate the proportions for the pad area
set H_proportion to 1
set V_proportion to 1
try
    tell application "Image Events"
        -- start the Image Events application
        launch
        -- open the image file
        set this_image to open this_file
        -- get dimensions of the image
        copy dimensions of this_image to {W, H}
        -- calculate pad dimensions
        if H_proportion is greater than V_proportion then
            set the new_W to (H * H_proportion) / V_proportion
            set pad_dimensions to {new_W, H}
        else
            set the new_H to (W * V_proportion) / H_proportion
            set pad_dimensions to {W, new_H}
        end if
        -- perform action
        pad this_image to dimensions pad_dimensions with pad color {65535, 65535, 65535}
        -- save the changes
        save this_image with icon
        -- purge the open image data
        close this_image
    end tell
on error error_message
    display dialog error_message
end try
    
pregunta James Levine 26.10.2016 - 16:03

1 respuesta

0

Si entendí su pregunta, no desea que se le pregunte a los archivos que deben actuar y desea que actúe sobre todos los archivos especificados, lo siguiente lo hará.

  • En Automator , crea un nuevo Flujo de trabajo . (Automator > File > New > Workflow)
  • Agrega una Obtener elementos del buscador especificados acción .

    • Agregue los elementos que desea que estén en la acción Obtener elementos del buscador especificados . Los elementos pueden ser archivos o carpetas.
  • Agrega una Obtener contenido de carpeta acción .

    • Esto es para manejar si un elemento en la Obtener elementos del buscador especificados acción es una Carpeta .
  • Agregue una acción Ejecutar AppleScript .
    • Agregue el siguiente código de AppleScript para reemplazar el código predeterminado.
on run {input, parameters}
    set list_of_files to input
    repeat with this_file in list_of_files
        -- indicate the proportions for the pad area
        set H_proportion to 1
        set V_proportion to 1
        try
            tell application "Image Events"
                -- start the Image Events application
                launch
                -- open the image file
                set this_image to open this_file
                -- get dimensions of the image
                copy dimensions of this_image to {W, H}
                -- calculate pad dimensions
                if H_proportion is greater than V_proportion then
                    set the new_W to (H * H_proportion) / V_proportion
                    set pad_dimensions to {new_W, H}
                else
                    set the new_H to (W * V_proportion) / H_proportion
                    set pad_dimensions to {W, new_H}
                end if
                -- perform action
                pad this_image to dimensions pad_dimensions with pad color {65535, 65535, 65535}
                -- save the changes
                save this_image with icon
                -- purge the open image data
                close this_image
            end tell
        on error error_message
            display dialog error_message
        end try
    end repeat
    return input
end run
    
respondido por el user3439894 26.10.2016 - 16:53

Lea otras preguntas en las etiquetas