Photo Bordure image sur Mac M1 ?

A savoir que les images que je compte traité feront toute 1600 px sur le plus long coté quelque soit leur format.
J'aimerais avoir 2 bordures sur celles-ci
- une qui ne fait que un liseré (noir) de 0,0035. ( comme je le fais déjà avec le script de base que tu m'as créé.
  • une qui soit (blanc) et qui fasse par exemple 0,035.
  • Et que le ration entre le bas et le haut soit de 1/4 en haut - 3/4 en bas

si cela est possible mais du coup c'est plus un cadre car il faudrait que les bords de coté soient identiques au bord du haut.
Ou en 2 temps un cadre classique qui fait le tour en 0,035 ( comme je peux le faire avec le script actuel ) et ensuite rajouter encore le même pourcentage que en haut et en bas et ensuite décaler de ce même pourcentage vers le haut l'mage. ( aucune idée si cela est possible)

Soit une image ( mettons en en exemple une carrée ) 1600x1600
j'y ajoute un liseré de 0,0035 en noir l'image devient 1606x1606
y ajouter ensuite un cadre de 0,035 en blanc l'image devient 1662x1662
ensuite ajouter (seulement en haut et en bas encore un bord en 0,035. l'image devient alors 1718x1662
et ensuite décaler l'image vers le haut de 0,035
 
Merci de ta participation. L'intérêt c'est un peu le traitement par lot... car sinon je peux faire cela à la main via Affinity photo aussi. Avant j'avais photoshop et avec un Droplet je le faisais c'était facile. D'ou ce post.
 
Bonjour,

je te met un script pour faire les bordures avec le bas plus grand.
Le script te demande de choisir le dossier contenant les fichiers à "Bordurer" puis il fait le job !
Il te met un message quand il à terminé
Soit prudent pour les essais, essai sur une copie de tes photos ! :D

Dis moi si c'est bon pour toi!

Tu parles de Affinity photo j'avais entendu dire qu'il avait la possibilité de créer des macros comme photoshop ...

Bloc de code:
tell application "Finder"
    set source to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à bordurer" as string
    set Fimage to {"jpg", "jpeg", "png", "tiff", "gif", "bmp", "psd"} -- liste des extensions a traiter dans Fimage avec fonction mdls
    set lesfichiers to files of source
    repeat with chaque_fichier in lesfichiers -- répète avec chaque fichier du dossier en cour
        tell application "Finder"
            
            set nom to name of chaque_fichier --récupère le nom du fichier
            set AppleScript's text item delimiters to {"."} -- defini le separateur
            set lextension to get last text item of nom -- recupère l'extension
            set lefichier to chaque_fichier as string --récupère le chemin du fichier au format chaine de caractères
            
            
            if lextension is in Fimage then -- si fichier video de la liste Fimage
                set lechemin to POSIX path of lefichier
                
                set lahauteur to do shell script "/usr/local/bin/exiftool -imageHeight " & quoted form of POSIX path of lefichier
                set lalargeur to do shell script "/usr/local/bin/exiftool -imageWidth " & quoted form of POSIX path of lefichier
                set orientation to do shell script "/usr/local/bin/exiftool -orientation " & quoted form of POSIX path of lefichier
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {": "}
                set lalargeur to last text item of lalargeur
                set lahauteur to last text item of lahauteur
                set orient to last text item of orientation
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                
                
                set largeur to lalargeur as number
                set hauteur to lahauteur as number
                
                if largeur > hauteur then
                    set cadre to round {largeur * 0.0035}
                else
                    set cadre to round {hauteur * 0.0035}
                end if
                
                set Lcadre to (largeur + cadre) as string
                set Vcadre to (hauteur + cadre) as string
                set couleur to "000000"
                
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                if largeur > hauteur then
                    set cadre to round {Lcadre * 0.035}
                else
                    set cadre to round {Vcadre * 0.035}
                end if
                
                set Lcadre to (largeur + cadre) as string
                set Vcadre to (hauteur + cadre) as string
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                
                if orient = "Rotate 90 CW" then
                    set cadre to round {Vcadre * 0.105}
                    set Lcadre to (Lcadre + cadre) as string
                else
                    set cadre to round {Lcadre * 0.105}
                    set Vcadre to (hauteur + cadre) as string
                end if
                
                set recadre to cadre / 3
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
            end if
            
        end tell
        
        
        tell application "Preview"
            activate
            set lefichier to lefichier as alias
            open lefichier
            tell application "System Events" to tell application process "Preview"
                
                tell menu bar 1 to tell menu "Édition"
                    tell menu item "Tout sélectionner"
                        click
                        repeat recadre times
                            key code 125
                        end repeat
                    end tell
                end tell
                tell menu bar 1 to tell menu "Outils"
                    tell menu item "Recadrer"
                        click
                    end tell
                end tell
                tell menu bar 1 to tell menu "Fichier"
                    tell menu item "Enregistrer"
                        click
                    end tell
                end tell
                key code 0 using {command down}
                
            end tell
        end tell
    end repeat
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
On y est presque... je dis cela car en fait le script fait le calcul de la largeur des bord en pourcentage selon les dimensions des images... et là aucun souci ça fonctionne. Je te mets mes captures de dimensions avant / après.
Capture d’écran 2024-08-04 à 10.10.11.png

Capture d’écran 2024-08-04 à 10.21.59.png
mais toujours un souci sur les verticales on voit que là les dimensions ne reflètent pas ce que je voudrais. exemple

Je résume en mettant pour mes 4 exemples un avant / après, si par exemple ma marge blanche est de 30 px donc pour le haut et les bord 30 px autour et le bas 90 px en plus

Avant: 1600x1600. - 1600x900. - 1600x1067. - 1067x1600
Après: 1660x1720. - 1660xx1020 - 1660x1187. - 1127x1720

On voit que la dimension maximale de la verticale devrait être identique à la carrée quand on raisonne en pixel. Alors que le script ne donne pas ce résultat.

Je ne sais pas si cela est faisable... je crois que nous avions été confronté à ce problème déjà au début du fil...

Sinon a part cela c'est top.

Pierre
 
Dernière édition:
Et avec photoscaopex on peut faire des cadres avec des ration différents 1/4 en haut 3/4 en bas ?
Le logiciel peut le faire de manière autonome ou il faut faire cela sur l'image et choisir ou on peut crée une action et que cela se face seul comme les Droplet de photoshop ?
 
Le mieux c'est que tu le télécharges. Il y a une foule d'opérations possibles gratuitement (dont un grand nombre d'encadrements) et pour certaines ils faut passer à la version Pro payante.
PhotoScape permet les traitements en batch.
Je l'ai installé dans Photos pour voir car je ne suis pas intéressé, mais tu ne risques rien d'essayer, c'est gratuit.
 
  • J’aime
Réactions: lepetitpiero
zeltron54 ne te prends pas trop le chou dessus non plus, ce que tu as déjà fait est très bien. J'ai changé des valeurs pour tester voir comment le script fonctionne
 
je mets ci dessous les images avec les couleurs des cadres on constate bien qu'il y a un décalage qui ne se fait pas comme la logique le voudrait, même si là c'est ps à l'échelle

20240706_M10C0139.jpg20240706_M10C0140.jpg20240706_M10C0141.jpg20240706_M10C0142.jpg
 
OK !
Un nouveau script
détail
il ajoute 0,0035 * la valeur du grand coté pour le cadre noir soit 6 pixels pour image 1600 donc bordure noire de 3 pixels.
puis 0,035 * la valeur du grand coté pour le cadre blanc autour soit 56 pixels au total
puis 0,105 * la valeur du grand coté en blanc en haut et en bas soit 112 pixels
puis il efface 56 pixels en haut

J'ai pris une image qui au départ fait 1600 x 899 pixels
La nouvelle image fait donc :
pour une image horizontale 1662 x 1017
pour une image verticale 961 x 1718

si c'est pas bon peut tu me dire ce que tu voudrais obtenir

Bon tests

Bloc de code:
tell application "Finder"
    set source to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à bordurer" as string
    set Fimage to {"jpg", "jpeg", "png", "tiff", "gif", "bmp", "psd"} -- liste des extensions a traiter dans Fimage avec fonction mdls
    set lesfichiers to files of source
    repeat with chaque_fichier in lesfichiers -- répète avec chaque fichier du dossier en cour
        tell application "Finder"
            
            set nom to name of chaque_fichier --récupère le nom du fichier
            set AppleScript's text item delimiters to {"."} -- defini le separateur
            set lextension to get last text item of nom -- recupère l'extension
            set lefichier to chaque_fichier as string --récupère le chemin du fichier au format chaine de caractères
            
            
            if lextension is in Fimage then -- si fichier video de la liste Fimage
                set lechemin to POSIX path of lefichier
                
                set lahauteur to do shell script "/usr/local/bin/exiftool -imageHeight " & quoted form of POSIX path of lefichier
                set lalargeur to do shell script "/usr/local/bin/exiftool -imageWidth " & quoted form of POSIX path of lefichier
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {": "}
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                
                tell application "Image Events"
                    launch
                    set cetimage to open lefichier
                    copy dimensions of cetimage to {W, H}
                end tell
                
                set largeur to W
                set hauteur to H
                
                if largeur > hauteur then
                    set cadre to round {largeur * 0.0035}
                else
                    set cadre to round {hauteur * 0.0035}
                end if
                
                set Lcadre to (largeur + cadre) as string
                set Vcadre to (hauteur + cadre) as string
                set couleur to "000000"
                
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                if largeur > hauteur then
                    set cadre to round {Lcadre * 0.035}
                else
                    set cadre to round {Vcadre * 0.035}
                end if
                
                set Lcadre to (Lcadre + cadre) as string
                set Vcadre to (Vcadre + cadre) as string
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                if largeur > hauteur then
                    set cadre to round {largeur * 0.07}
                    set Vcadre to (Vcadre + cadre) as string
                else
                    set cadre to round {hauteur * 0.07}
                    set Vcadre to (Vcadre + cadre) as string
                end if
                
                set recadre to cadre / 2
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
            end if
            
        end tell
        
        
        tell application "Preview"
            activate
            set lefichier to lefichier as alias
            open lefichier
            tell application "System Events" to tell application process "Preview"
                
                tell menu bar 1 to tell menu "Édition"
                    tell menu item "Tout sélectionner"
                        click
                        repeat recadre times
                            key code 125
                        end repeat
                    end tell
                end tell
                tell menu bar 1 to tell menu "Outils"
                    tell menu item "Recadrer"
                        click
                    end tell
                end tell
                tell menu bar 1 to tell menu "Fichier"
                    tell menu item "Enregistrer"
                        click
                    end tell
                end tell
                delay 1
                key code 0 using {command down}
                
            end tell
        end tell
    end repeat
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: lepetitpiero
Alors là bravo ! Je te tire mon chapeau.Pile poil nickel sur chaque dimension par rapport aux critères.
C ça fonctionne super bien.
Crois-tu qu'il soit possible d'avoir cela sous une forme d'action de dossier comme celui ou je pouvais choisir le nombre de cadre et les couleurs.

Sur celui-ci j'aimerais juste pouvoir définir la talle de la marge blanche (si je veux que ce soit plus que 0,035) et le ration entre haut en bas ( je t'avais demandé 1/4 en haut et 3/4 en bas) est-ce la aussi transposable pour que j'ai par exemple une marge plus grande en bas (Mais je pense que cela complique trop les choses et ce serait abuser de ma part)
Je suppose que déjà si la largeur de marge blanche est variable cela va aussi jouer sur la dimension de l'ensemble et que rester sur le ratio précédent sera plus aisé à scripter sans tout reprendre.
Sinon je vais me contenter de ce que tu as écris là c'est déjà merveilleux à mes yeux.

Pierre
 
on va déjà essayer de le finaliser après on verra pour le mettre en action de dossier.

Donc tu veux avoir une demande pour entrée la valeur de la bordure blanche qui est actuellement de 0,035, c'est bien çà ?
et que le bas soit égal à 3 fois le haut ?

j' attends confirmation et je m'y met.
 
Oui j'aimerais bien ça... et comme je le disais, mais je pense que cela complique le script si je peux avoir 3 fois ou 4 ou 5 fois le haut.
Donc bordure blanche variable et le bas égal à 3 fois le haut si jamais avoir ce paramètre aussi réglable est trop compliqué à faire.
 
Alors voila pour tests
Si c'est bon on regardera pour en faire une action de dossier.

Bloc de code:
tell application "Finder"
    set source to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à bordurer" as string
    set epaisseur to display dialog "Entrer la valeur pour l'épaisseur du cadre blanc :" default answer "0,035"
    set epaisseur to text returned of result
    set ratio to display dialog "Entrer la valeur pour le ration haut bas (2 ou 3 ou 4 ou..) :" default answer "3"
    set ratio to text returned of result
    set Fimage to {"jpg", "jpeg", "png", "tiff", "gif", "bmp", "psd"} -- liste des extensions a traiter dans Fimage avec fonction mdls
    set lesfichiers to files of source
    repeat with chaque_fichier in lesfichiers -- répète avec chaque fichier du dossier en cour
        tell application "Finder"
            
            set nom to name of chaque_fichier --récupère le nom du fichier
            set AppleScript's text item delimiters to {"."} -- defini le separateur
            set lextension to get last text item of nom -- recupère l'extension
            set lefichier to chaque_fichier as string --récupère le chemin du fichier au format chaine de caractères
            
            
            if lextension is in Fimage then -- si fichier video de la liste Fimage
                set lechemin to POSIX path of lefichier
                
                set lahauteur to do shell script "/usr/local/bin/exiftool -imageHeight " & quoted form of POSIX path of lefichier
                set lalargeur to do shell script "/usr/local/bin/exiftool -imageWidth " & quoted form of POSIX path of lefichier
                set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                set AppleScript's text item delimiters to {": "}
                set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                
                tell application "Image Events"
                    launch
                    set cetimage to open lefichier
                    copy dimensions of cetimage to {W, H}
                end tell
                
                set largeur to W
                set hauteur to H
                
                if largeur > hauteur then
                    set cadre to round {largeur * 0.0035}
                else
                    set cadre to round {hauteur * 0.0035}
                end if
                
                set Lcadre to (largeur + cadre) as string
                set Vcadre to (hauteur + cadre) as string
                set couleur to "000000"
                
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                if largeur > hauteur then
                    set cadre to round {Lcadre * epaisseur}
                else
                    set cadre to round {Vcadre * epaisseur}
                end if
                
                set Lcadre to (Lcadre + cadre) as string
                set Vcadre to (Vcadre + cadre) as string
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
                
                if largeur > hauteur then
                    set cadre to round {largeur * epaisseur * ((ratio - 1) * 2)}
                    set Vcadre to (Vcadre + cadre) as string
                else
                    set cadre to round {hauteur * epaisseur * ((ratio - 1) * 2)}
                    set Vcadre to (Vcadre + cadre) as string
                end if
                
                set recadre to cadre / 2
                set couleur to "FFFFFF"
                set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                do shell script lacommande
            end if
            
        end tell
        
        
        tell application "Preview"
            activate
            set lefichier to lefichier as alias
            open lefichier
            tell application "System Events" to tell application process "Preview"
                
                tell menu bar 1 to tell menu "Édition"
                    tell menu item "Tout sélectionner"
                        click
                        repeat recadre times
                            key code 125
                        end repeat
                    end tell
                end tell
                tell menu bar 1 to tell menu "Outils"
                    tell menu item "Recadrer"
                        click
                    end tell
                end tell
                tell menu bar 1 to tell menu "Fichier"
                    tell menu item "Enregistrer"
                        click
                    end tell
                end tell
                key code 0 using {command down}
                
            end tell
        end tell
    end repeat
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Ah... fabuleux ca fonctionne je suis épaté ! Tu mérite que je t'offre une bouteille !
 
Si c'est bon, je te mets la version action de dossier.

A copier dans ta bibliothèque etc...

Lors de sa première exécution il te demandera d'autoriser l'accès et d'autoriser dans "confidentialité et sécurité"

Mais je pense que tu connais tout ça.

Bloc de code:
on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        --set source to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à bordurer" as string
        set epaisseur to display dialog "Entrer la valeur pour l'épaisseur du cadre blanc :" default answer "0,035"
        set epaisseur to text returned of result
        set ratio to display dialog "Entrer la valeur pour le ration haut bas (2 ou 3 ou 4 ou..) :" default answer "3"
        set ratio to text returned of result
        set Fimage to {"jpg", "jpeg", "png", "tiff", "gif", "bmp", "psd"} -- liste des extensions a traiter dans Fimage avec fonction mdls
        
        repeat with chaque_fichier in Liste_Fichiers -- répète avec chaque fichier du dossier en cour
            tell application "Finder"
                
                set nom to name of chaque_fichier --récupère le nom du fichier
                set AppleScript's text item delimiters to {"."} -- defini le separateur
                set lextension to get last text item of nom -- recupère l'extension
                set lefichier to chaque_fichier as string --récupère le chemin du fichier au format chaine de caractères
                
                
                if lextension is in Fimage then -- si fichier video de la liste Fimage
                    set lechemin to POSIX path of lefichier
                    
                    set lahauteur to do shell script "/usr/local/bin/exiftool -imageHeight " & quoted form of POSIX path of lefichier
                    set lalargeur to do shell script "/usr/local/bin/exiftool -imageWidth " & quoted form of POSIX path of lefichier
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {": "}
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                    
                    tell application "Image Events"
                        launch
                        set cetimage to open lefichier
                        copy dimensions of cetimage to {W, H}
                    end tell
                    
                    set largeur to W
                    set hauteur to H
                    
                    if largeur > hauteur then
                        set cadre to round {largeur * 0.0035}
                    else
                        set cadre to round {hauteur * 0.0035}
                    end if
                    
                    set Lcadre to (largeur + cadre) as string
                    set Vcadre to (hauteur + cadre) as string
                    set couleur to "000000"
                    
                    set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                    do shell script lacommande
                    
                    if largeur > hauteur then
                        set cadre to round {Lcadre * epaisseur}
                    else
                        set cadre to round {Vcadre * epaisseur}
                    end if
                    
                    set Lcadre to (Lcadre + cadre) as string
                    set Vcadre to (Vcadre + cadre) as string
                    set couleur to "FFFFFF"
                    set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                    do shell script lacommande
                    
                    if largeur > hauteur then
                        set cadre to round {largeur * epaisseur * ((ratio - 1) * 2)}
                        set Vcadre to (Vcadre + cadre) as string
                    else
                        set cadre to round {hauteur * epaisseur * ((ratio - 1) * 2)}
                        set Vcadre to (Vcadre + cadre) as string
                    end if
                    
                    set recadre to cadre / 2
                    set couleur to "FFFFFF"
                    set lacommande to "sips -p " & Vcadre & " " & Lcadre & "  -s formatOptions 100 --padColor " & couleur & " -i " & quoted form of lechemin
                    do shell script lacommande
                end if
                
            end tell
            
            
            tell application "Preview"
                activate
                set lefichier to lefichier as alias
                open lefichier
                tell application "System Events" to tell application process "Preview"
                    
                    tell menu bar 1 to tell menu "Édition"
                        tell menu item "Tout sélectionner"
                            click
                            repeat recadre times
                                key code 125
                            end repeat
                        end tell
                    end tell
                    tell menu bar 1 to tell menu "Outils"
                        tell menu item "Recadrer"
                            click
                        end tell
                    end tell
                    tell menu bar 1 to tell menu "Fichier"
                        tell menu item "Enregistrer"
                            click
                        end tell
                    end tell
                    key code 0 using {command down}
                    
                end tell
            end tell
        end repeat
    end tell
    
    tell application "Finder"
        activate
        (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
    end tell
end adding folder items to
 
Bonsoir... c'est juste parfait. Encore bravo pour ce fabuleux travail et aide que tu m'apportes. Vraiment un grand merci, si tu veux que je te dédommage pour le temps passé... fais moi un MP.

Je vais traiter quelques images. Merci encore

Bonne soirée.
 
Content pour toi !
Ce fut un plaisir.
Si tu as un problème n'hésite pas à demander. Je dis ça car certain fichier ou dossier posent problème avec la fonction "Image Events" que je pourrais alors remplacer.

Bonne soirée.
 
Ca fonctionne mais j'ai un souci autre... mais qui est minime car je peux faire sans. J'ai voulu définir le dossier ou se passe l'action de dossier comme dossier de destination d'export de mon logiciel et ... vu que la il y a une fenêtre de dialogue... Pif, paf, pour... si j'exporte plus de une photo, donc un traitement par lot par exemple 5 j'ai 5 fois la boite de dialogue qui s'ouvre ( vu qu'il y a 5 fichiers qui arrivent mais pas tous en même temps comme je le fais lors des tests. On avait pas ce souci lorsque il n'y avait pas de boite de dialogue. Est-il possible d'avoir un délai d'attente avant que une nouvelle boite s'ouvre ? ( genre 10s).
 
Bonjour,

Je ne comprend pas ta question.
Lorsque je sélectionne et que je "glisse, dépose" 5 photos d'un coup, je n'ai qu'une seule fois les boites de dialogue !

Bien sur si tu les déposes une par une, il y aura x fois la boite de dialogue.

Peux-tu reformuler ta question ?