repeat actionscript in Sierra?

1

Potresti aiutarmi a correggere il seguente script?

Ho un actionscript che uso all'interno di Automator per riempire qualsiasi immagine di dimensioni proiettata su di esso in una tela quadrata. In altre parole, non è necessario alimentare le dimensioni letterali del lato più lungo e quindi dirgli di abbinare l'altra dimensione con gli stessi pixel. (Per 3000 immagini che richiederebbero tutto il tempo necessario per esportarle manualmente).

Fino a Sierra, questo script avrebbe funzionato per qualsiasi numero di immagini che ho proiettato su di esso, se avessi detto ad Automator di agire su immagini selezionate, immagini all'interno di una cartella o se avessi specificato le immagini da Automator. Ora, quando lo script inizia, apre una finestra del Finder che richiede di selezionare un singolo oggetto. (E la scelta di multipli da questa finestra non risolverà il problema, poiché lo script sta cercando di elaborare un articolo per iterazione.) In altre parole, lo script viene eseguito una volta e poi finisce. Mi piacerebbe sapere come farlo funzionare per il numero di elementi necessari, e mi piacerebbe sapere come far funzionare lo script senza richiedere elementi da una finestra del Finder, in particolare se ho già utilizzato Ottieni da Automator per scegliere gli articoli in questione.

Quindi è chiaro che lo script si sta comportando diversamente ora, non il flusso di lavoro in Automator. E per testare ulteriormente questo, lo script potrebbe essere eseguito altrettanto facilmente dall'AppleScript Editor, ma fa la stessa cosa.

Ecco lo script in questione:

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
    
posta James Levine 26.10.2016 - 16:03
fonte

1 risposta

0

Se ho capito la tua domanda, non vuoi che venga richiesto che i file agiscano e vuoi che agisca su tutti i file specificati, il seguente lo farà.

  • In Automator , crea un nuovo Flusso di lavoro . (Automator > File > Nuovo > Flusso di lavoro)
  • Aggiungi un Trova elementi del Finder specificato azione .

    • Aggiungi gli elementi che desideri siano Trova elementi del Finder specificato azione . Gli elementi possono essere file e / o cartelle.
  • Aggiungi un contenuto della cartella azione .

    • Questo è da gestire se un elemento in Trova elementi del Finder specificato è una cartella .
  • Aggiungi un Esegui AppleScript azione .
    • Aggiungi il seguente codice AppleScript per sostituire il codice predefinito
    • .
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
    
risposta data 26.10.2016 - 16:53
fonte

Leggi altre domande sui tag