0 votes

L'action "Rotation des images" de l'Automator est incroyablement gourmande en mémoire

Je suis en train de créer un flux de travail Automator pour faire pivoter des images. Il semble que sips et d'autres possibilités de rotation de l'image ne modifient pas réellement les bits de l'image, mais font simplement basculer un interrupteur pour l'orientation, et je dois changer les bits de l'image. Quoi qu'il en soit, je construis le flux de travail en utilisant l'action "Rotation d'images" et il semble qu'elle utilise une action tonne de mémoire lorsque vous faites pivoter plusieurs images (ce qui est en quelque sorte l'objectif d'une action de l'automate). Apparemment, après avoir fait pivoter une image, il conserve la mémoire et ne la libère qu'une fois l'action terminée. C'est ainsi que je finis par manquer de mémoire vive et échanger également !

Existe-t-il une solution pour le forcer à libérer de la mémoire ?

1voto

Kerry Jones Points 145

Voici le code applescript que j'ai écrit pour faire pivoter une image de 90° vers la droite. Vous ne pouvez effectuer qu'une rotation vers la droite. Donc si vous voulez faire une rotation de 90 à gauche pour entrer, vous devrez faire une rotation de 270 à droite.

(* 
  Demonstration of how dropping files on AppleScript icon works.  Shows how to debug via on run path. Shows items added to folder.

 Save as an Application Bundle.  Don't check anything.

 Shows log statement.

 It is easier to diagnose problems with debug information. I suggest adding log statements to your script to see what is going on.  Here is an example.

For testing, run in the Script Editor.
    1) Click on the Event Log tab to see the output from the log statement
    2) Click on Run

Author: rccharles

 *)

-- Gets invoked here when you run in AppleScript editor.

on run
    --  debug lines
    set desktopPath to (path to desktop) as string

    -- here is a log statment.
    log "desktopPath = " & desktopPath

    -- Be sure to select a file on your DESKTOP.
    set see to alias (desktopPath & "picture.jpg")

    -- Simulate dropped items list.
    set dropped_items to {see}

    common(dropped_items)

end run

-- Gets invoked here when something is dropped on the folder
-- Folder actions.

on adding folder items to this_folder after receiving added_items

    common(added_items)

end adding folder items to

-- Gets invoked here when something is dropped on this AppleScript icon

on open dropped_items
    display dialog "Number of items dropped is " & (count of dropped_items) & ". " giving up after 3

    common(dropped_items)

    display dialog "Processed " & (count of dropped_items) & " items. " giving up after 2

end open

on common(dropped_items)

    -- Write a message into the event log.
    log "  --- Starting on " & ((current date) as string) & " --- "

    log "class = " & class of dropped_items

    repeat with droppedItem in dropped_items

        -- display dialog "here is something that we got as input: " & droppedItem giving up after 2
        set unixDroppedPath to POSIX path of droppedItem
        log "unixDroppedPath = " & unixDroppedPath

        set quotedUnixDroppedPath to quoted form of unixDroppedPath
        log "quoted form is " & quotedUnixDroppedPath

        try
            set fromUnix to do shell script "sips -r 90  " & quotedUnixDroppedPath
            -- display dialog "sips -r 90 of " & quotedUnixDroppedPath & return & " unix says " & fromUnix giving up after 1
        on error errMsg
            log "sips -r 90  error..." & errMsg
            display dialog "error from sips -r 90 of " & errMsg
        end try

    end repeat

end common

insérer un aperçu de l'image pivotée.

preview rotated image

Insérer une image pivotée sips.

sips rotated image

0voto

Mateus Ribeiro Points 877

Vous pouvez utiliser l'application Preview.app pour effectuer cette tâche. Créez un nouveau service appelé RotateLeft comme suit :

enter image description here

et collez ce code :

on run
    tell application "System Events"
        key code 36 -- Enter --> Open rename field
        delay 0.1
        key code 0 using command down -- command+A --> select all to include extension
        delay 0.1
        key code 8 using command down -- Copy name to clipboard
        delay 0.1
        key code 36 -- Enter --> Close rename field
        delay 0.1
        set fileName to the clipboard as text -- retrieve file name
        delay 0.1
        key code 31 using command down -- Command+O --> Open file (Default application must be Preview)
        delay 0.1
        repeat until exists window fileName of application process "Preview" -- Make sure image is open
            delay 0.1
        end repeat
        delay 0.1
        key code 37 using command down -- Command+L --> Rotate Left
        delay 1 -- If you are using really big images rise this value so the program can do the task
        key code 13 using command down -- Command+W --> Close image (use code 12 if you want to Quit every time)
        delay 0.1
        set the clipboard to {} -- erase clipboard
    end tell
end run

Avant d'utiliser le service, vous devez autoriser la prévisualisation sous Sécurité/Privacité/Accessibilité comme suit :

enter image description here

Vous pouvez modifier les valeurs du délai en fonction de vos besoins. Ajoutez également un raccourci sous Préférences/Clavier/Shortcut/Services. N'oubliez pas de dupliquer le service en utilisant le code de touche 15 (Commande+R) au lieu du code de touche 37 pour effectuer la rotation à droite.

0voto

benwiggy Points 21125

Il existe une nouvelle "action rapide" dans Mojave qui permet de faire pivoter les images (à gauche).

Est-ce que c'est mieux ?

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