L’action Automator «Rotation d’images» nécessite énormément de mémoire

0

Je construis un flux de travail automate pour faire pivoter les images. Il paraît que sips et d'autres possibilités de rotation d'image ne changent pas réellement les bits de l'image, mais basculent simplement un commutateur pour l'orientation, et j'ai besoin de changer les bits d'image. Quoi qu’il en soit, je construis le flux de travail en utilisant l’action "Rotation des images" et il semble qu’il utilise un tonne de la mémoire lorsque vous faites pivoter plusieurs images (ce qui est en quelque sorte le point 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. Et donc je finis par manquer de bélier et aussi échanger !

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

Jason
la source
Combien de bélier utilise-t-il?
abc
Des concerts et des concerts ...
Jason
Une solution possible - en expérimentant maintenant - consiste à créer un flux de travail "travailleur" avec toutes les rotations et à laisser le flux de travail principal transmettre chaque sous-dossier au travailleur afin qu'il libère le ram
Jason
C'est un grand mystère. Lorsque j'utilise Sips, l'image s'affiche comme prévu. Lorsque j’avais utilisé l’aperçu dans le passé, il ya trois ans, sur Macos Yosemite, j’avais des problèmes pour télécharger sur le Web. Aujourd'hui, les deux méthodes semblent fonctionner comme prévu. Les images ont été tournées sur les sites Google sites.google.com/site/generalsiteforrandompage/rotated-images
historystamp
Puis-je vous demander pourquoi vous avez besoin de changer les bits? Pour ce faire, vous devez créer un nouvel objet de données graphiques, transformer les données et enregistrer un nouveau fichier. (Certaines implémentations peuvent ne pas copier les métadonnées, comme EXIF, dans le processus.) Les artefacts JPEG augmenteront si vous utilisez JPEG. La valeur de l'indicateur de rotation dans le format de fichier a pour but d'effectuer la rotation avec un minimum d'effort et d'éviter de modifier les données de l'image.
benwiggy

Réponses:

0

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

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é / Confidentialité / Accessibilité comme ceci:

enter image description here

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

Mateus Ribeiro
la source
fyi: La version graphique de preview, définit simplement les drapeaux pour faire pivoter l'image lors de son affichage.
historystamp
@historystamp faux.
Mateus Ribeiro
Essayez de télécharger l'image sur une page html et voyez quels sont les résultats. Pour moi dans 10.10.5, j'ai fait pivoter l'image en aperçu. J'ai téléchargé l'image sur le Web uniquement pour trouver que l'image n'avait pas été pivotée.
historystamp
J'ai trouvé l'image téléchargée après la rotation d'un aperçu sur ce site.
historystamp
0

Il existe une nouvelle "Action rapide" dans Mojave qui fait pivoter les images (à gauche).

Est-ce que c'est mieux?

benwiggy
la source
0

Voici le code AppleScript que j'ai écrit pour faire pivoter une image à droite de 90. Vous pouvez uniquement faire pivoter à droite. Donc, si vous voulez faire pivoter à gauche 90 pour entrer, vous devrez faire pivoter à droite 270.

(* 
  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 tournée.

preview rotated image

insérez une image pivotée en gorgées.

sips rotated image

historystamp
la source