Script pilotant des scripts photoshop [Résolu], scripts PS lancé selon le nom de l'image |
Bienvenue invité ( Connexion | Inscription )
Script pilotant des scripts photoshop [Résolu], scripts PS lancé selon le nom de l'image |
4 Sep 2016, 17:03
Message
#1
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Bonjour,
J'ai des images classées dans des dossiers dont le nom est structuré, situé sur un serveur distant. Exemple : 501__F5_SP3_SP3_P2 Les caractères F5, SP3 désignent des scripts photoshop nommés F5, SP3 etc. (ces scripts appliquent des recadrages de valeurs différentes sur les images) Les images de ces dossiers ont dans leur nom un index ZP_1, ZP_2, ZP_3 etc. Le script doit appliquer un script photoshop aux images comme suit : - image contenant l'index ZP_1 => script F5 (premier nom de script photoshop trouvé dans le nom de dossier) - image contenant l'index ZP_2 => script SP3 (second nom de script photoshop trouvé dans le nom de dossier). etc. Il y a 19 scripts photoshop nommés P1, P2, P3, P4, P5, P6, P7, F1, F2, F3, F4, F5, F6, F7, F8, SP1, SP2, SP3 et SP4 Mes dossiers ont toujours une structure de nom comme suit : 3 chiffres double underscore noms de scripts PS séparés par un underscore. Mes images ont toujours une structure de nom comme suit : Lettre G Underscore 8 chiffres underscore 2 ou 3 chiffres underscore ZP underscore indice (valeur 1 à 8) 6 chiffres exemple : G_89279608_60_ZP_5_557298.jpg Ces noms sont uniques et il n'y a pas de doublons dans les dossiers. Dans les noms de dossiers ont peut retrouver plusieurs fois les mêmes scripts PS. Par exemple dans l'exemple 501__F5_SP3_SP3_P2 les images d'index ZP_2 et ZP_3 sont traitées avec le script SP3. Règle de gestion : s'il y a des images d'indice supérieur au nombre de scripts écrits dans le nom de du dossier, le scrip appliqué par défaut est SP3. Pour reprendre l'exemple 501__F5_SP3_SP3_P2, si le dossier contient une image d'indice ZP_5 on lui appliquera le script SP3 Par simplicité d'utilisation le script doit pouvoir tourner sur une série de dossiers que j'aurais sélectionnés. Voilà, merci pour votre aide et à votre dispo pour toute question. Speed Moock |
|
|
5 Sep 2016, 09:10
Message
#2
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 264 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Bonjour,
Je vais d'abord essayer de résumer ton besoin (la reformulation est le plus simple moyen pour toi de vérifier ce que j'ai compris de tes explications !). Le besoin : Tu as des dossiers avec des noms de la forme: xxxx__S1_S2_S3_S4 (jusqu'à S8). Les S1,S2,...sont des noms de scripts Photoshop. Dans chaque dossier, tu as des images dont le nom est de la forme: G_xxxxx_yyy_ZP_s_zzzzz.jpg Dans ce nom d'image, le s désigne un indice de 1 à 8 qui est le numéro du script S1 à S8 issu du dossier. C'est ce script qui doit être utilisé pour l'image. Si l'indice ne correspond à aucun script dans le nom du dossier, alors on applique le script SP3. Exemple: Dossier : xxxx__P6_F5_P1 - fichier image G_xxxx_yyy_ZP_2_zzzz.JPG -> indice 2 on applique le script N°2 du dossier -> script "F5" - fichier image G_xxxx_yyy_ZP_1_zzzz.JPG -> indice 1 on applique le script N°1 du dossier -> script "P6" - fichier image G_xxxx_yyy_ZP_4_zzzz.JPG -> indice 4 qui n'existe pas dans le dossier -> par défaut script "SP3" Je suppose que cette reformulation est conforme à ton besoin pour la suite. Le concept du programme Le programme doit sélectionner un ou plusieurs dossiers. Pour chaque dossier : - il faut construire une liste des 8 scripts avec, par défaut, les valeurs "SP3". - il faut extraire du nom du dossier tous les S1,S2,...et les mettre dans la liste, dans l'ordre. - A ce stage, la liste des scripts associés au dossier exemple (xxxx__P6_F5_P1) sera P6,F5,P1,SP3,SP3,SP3,SP3,SP3 - il faut prendre tous les fichiers de ce dossier - prendre leur nom et vérifier que ce nom a bien un format adéquat, puis en extraire l'indice (situé entre le 4ème et le 5ème "_"). - récupérer le script de même indice dans la liste des scripts du dossier. Pour reprendre l'exemple, l'indice 2 donnera le script F5. - appliquer le script Photoshop ainsi déterminé au fichier, c'est à dire ouvrir l'image, appliquer le script, sauvegarder les changements et fermer l'image. Le script Le script ci-dessous correspond à cette description. Il comporte, comme d'habitude, des commentaires pour te permettre de mieux le comprendre. Il fait appel à une sous-routine "PShopScript" qui applique le script SScript au fichier SFichier. J'ai testé l'ouverture, l'enregistrement et la fermeture de l'image avec Photoshop. La sous routine PShopScript Dans cette sous routine, j'ai mis en commentaire la ligne "do action..." car je ne peux pas la tester: 1) je ne suis pas expert en scripts Photoshop ! 2) ma version the Photoshop est sûrement plus ancienne que la tienne (il faut d'ailleurs que tu changes "Photoshop CS3" avec ta version) 3) il se peut que ta version Photoshop ne gère pas les actions comme la mienne 4) tu dois mettre le nom de ton dossier d'action Photoshop Pour tester le reste, j'ai mis dans cette routine un display dialog après l'ouverture de l'image dans Photoshop ! il faudra supprimer ce display dialog ! Excepté cette sub-routine, le reste du script a été testé et il fonctionne. Il accepte la sélection multiple de dossiers qui seront traités un par un. Pour le nom du dossier, il doit au moins contenir 1 script (xxx__S1) sinon il y a une erreur (je n'ai pas géré cette erreur qui me semble peu probable). Il vérifie que les scripts dans le nom du dossier existent, sinon, il met SP3. Pour le nom des fichiers, il vérifie que le format de nom est bon et que l'indice situé après le 4ème "_" est entre 1 et 8. Sinon, le fichier n'est pas traité. Voilà, je pense avoir été clair : CODE -- liste des scripts possibles pour vérification set PSScripts to {"P1", "P2", "P3", "P4", "P5", "P6", "P7", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "SP1", "SP2", "SP3", "SP4"} set mesDossiers to choose folder with prompt "Sélectionner le dossier" with multiple selections allowed repeat with unDossier in mesDossiers -- boucle sur chaque dossier sélectionné tell application "Finder" to set NDos to name of unDossier set AppleScript's text item delimiters to {"_"} set DScript to {"SP3", "SP3", "SP3", "SP3", "SP3", "SP3", "SP3", "SP3"} -- par défaut les 8 scripts sont SP3 repeat with I from 3 to count of text item of NDos -- text item 1 = xxx, text item 2 est vide if text item I of NDos is in PSScripts then -- il faut que le script existe set item (I - 2) of DScript to text item I of NDos end if end repeat -- A ce stade, DSCript contient les scripts à lancer pour chaque indice de 1 à 8 tell application "Finder" to set MesImages to name of every item of folder unDossier repeat with uneImage in MesImages -- boucle sur chaque image du dossier set Indice to 0 try set Indice to text item 5 of uneImage -- recherche de l'indice XX dans le format G_yyyyyyy_yy_ZP_XX_yyyyy.jpg end try if (Indice > 0) and (Indice < 9) then PShopScript(item Indice of DScript, (unDossier as string) & uneImage) -- applique le script end if -- test sur la validité de l'indice end repeat -- boucle sur l'image suivante du dossier end repeat -- boucle sur le dossier suivant return on PShopScript(SScript, SFichier) -- applique le script Photoshop SScript au fichier SFichier log "Pshop=" & SScript & return & SFichier tell application "Adobe Photoshop CS3" -- à corriger avec ta version open SFichier -- do action SScript from "ton_dossier_d'actions" display dialog "process en cours" save current document close current document end tell end PShopScript Cordialement -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
5 Sep 2016, 11:33
Message
#3
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Bonjour PBell
Parfait merci. Je vais tester ça d'ici ce soir mais le besoin a bien été reformulé. Merci d'avance, |
|
|
5 Sep 2016, 21:47
Message
#4
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Bonjour,
Alors j'ai deux soucis. 1er : le premier script PS lancé coince. Une fois celui passé (on fait ignorer les msg d'erreur) les autres tournent jusqu'au message d'erreur suivant : 2eme soucis : voir message d'erreur. Je vous rajoute en PJ dans un second post un dossier test ainsi que mes scripts PS pour vous aider à tester. Merci. Capture_d___e__cran_2016_09_05_a___22.33.43.png ( 48.31 Ko ) Nombre de téléchargements : 10 et voici le dossier en PJ
Fichier(s) joint(s)
|
|
|
5 Sep 2016, 21:57
Message
#5
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 264 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Bonsoir,
C'est bien ce que je craignais : le problème vient de la sous routine qui traite le fichier dans Photoshop. Apparemment l'ouverture du fichier se fait bien, peut être même le script Photoshop. L'erreur vient du "save". Il me semble avoir lu que sur les version suivantes de Photoshop (CS4, 5, 6..) les syntaxes d'ouverture et de fermeture ont changées par rapport à la CS3 que j'ai. Essaye de changer le "save current document" par un "save SFichier"...? Sans doute le même problème aussi pour le "close" qui suit. Je ne peux pas t'aider plus sur cette partie car je n'ai pas Photoshop autre que le vieux CS3. Provisoirement, tu peux mettre une trace plus explicite que "processus en cours" par exemple : CODE Display Dialog "fichier:" & SFichier & return & "Script:" & Script Cela te confirmera que le reste du script fonctionne en affichant l'image en cours et son script. Quant au fait que le premier script ne passe pas et les suivants oui, essaye d'ouvrir l'application Photoshop sans image AVANT de lancer le script. Tiens moi informé de tes essais. A+ -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
5 Sep 2016, 22:11
Message
#6
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Salut,
je viens de réaliser un truc : mes scripts PS sauvent et ferment le fichier... donc ton script cherche à sauver & fermer quelquechose qui l'est déjà. J'essaye en supprimant la ligne save. Bon.. un peu mieux mais je bloque toujours du coup sur la première instruction de mon script PS (voire copie écran). Comme si le script PS se lançait mais sans fichier ouvert.... As-tu moyen de tester ? Suite de mes essais : Si je pré-ouvre dans PS tous les fichiers du dossier à traiter ça fonctionne. Je regarde dans ton script où se fait l'ouverture...
Fichier(s) joint(s)
|
|
|
5 Sep 2016, 22:29
Message
#7
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Bon et bien je vois bien dans la sous routine que le fichier Sfichier s'ouvre.
J'ai essayé de rajouter un open current document avant le lancement de la sous routine... Mais ça fonctionne pas mieux. |
|
|
6 Sep 2016, 06:28
Message
#8
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 264 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Bonjour,
Effectivement, si tes scripts Photoshop enregistrent et ferment les fichiers, 2 instructions sont à retirer dans la sous Routine. : le save et le close. Quant à l'erreur que tu as, elle est peut être due au fait que le "do action" se fait alors que Photoshop n'a pas encore fini d'ouvrir l'image. Pour tracer l'erreur, j'ai modifié la sous routine en ajoutant des traces et surtout un délai d'attente. J'ai aussi ajouté un activate juste avant le script Photoshop pour forcer l'application a être au premier plan avant le script PS. Remplace juste la sous routine par celle ci-dessous. CODE on PShopScript(SScript, SFichier) -- applique le script Photoshop SScript au fichier SFichier display dialog "Script=" & SScript & return & "sur le fichier " & SFichier -- affiche le nom du script et celui du fichier tell application "Adobe Photoshop CS3" -- à corriger avec ta version open SFichier delay 2 -- attente de 2 secondes display dialog "le fichier doit être ouvert" -- vérifier avant de cliquer OK que l'image est bien ouverte activate do action SScript from "DROPLET RESIZE" -- le script sauvegarde et ferme l'image après traitement display dialog "Script exécuté !" end tell end PShopScript Fais le test sur un dossier avec seulement 2 ou 3 images car tu vas devoir cliquer OK 3 fois par image ! Tu dois avoir un dialogue avec le nom du script et celui de l'image : Cela te permet de bien vérifier que tout le reste du script fait l'association correcte script/image. Ensuite il y a un délai de 2 secondes qui devrait être largement suffisant pour que Photoshop finisse d'ouvrir l'image. Puis, un dialogue indiquant que le fichier doit être ouvert. A ce stade, le script Photoshop n'a pas encore démarré. Vérifie bien que l'image est effectivement ouverte à l'écran. Enfin, un dialogue indiquant que le script PS est exécuté. Ces 3 dialogues seront visibles pour chaque image. Tu dois cliquer OK à chaque fois et surtout bien mémorisé ceux que tu as vu avant que ça plante (si ça plante !). Avec cette trace, on pourra trouver d'où vient le problème. Pour m'aider, j'ai quelques questions : - Quelle version de Photoshop as tu ? - Quelle machine (type de mac, processeur, mémoire et version OS) ? A+ -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
6 Sep 2016, 23:08
Message
#9
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Salut,
Désolé journée difficile et pas eu le temps de tester avant ce soir. Donc résultat : msg d'erreur "l'image doit être ouverte" avant chaque image. Le problème est donc bien là, l'image n'est pas ouverte au moment où le script PS se lance. Je suis sur un macbook pro sous OS 10.6.8 en version PS CS5.1 Merci d'avance,
Fichier(s) joint(s)
|
|
|
7 Sep 2016, 06:31
Message
#10
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 264 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Bonjour,
Tu n'as pas précisé si, lors du lancement, tu avais bien le dialogue affichant le script et le nom du fichier ("Script=xxx sur le fichier yyyyy") . Est-ce bien le cas ? merci de confirmer. Si oui, l'erreur que tu indiques se produit-elle avant ou après le second dialogue ("le fichier doit être ouvert") ? Il est important que, lorsque je mets des traces, tu m'indiques précisément celles que tu vois et celles que tu ne vois pas. Sinon, je ne peux t'aider ! Faute de ses informations, je vais supposer que c'est la commande Open qui ne marche pas sur la CS5 comme sur la CS3. Pour tester cela, voici le petit script ci-dessous que tu dois mettre dans un nouveau script, et qui teste juste l'ouverture d'une image sur Photoshop : Pense à corriger "CS3" and "CS5" !! CODE set F to choose file "sélection d'une image" set SF to F as string -- test 1 display dialog "test 1" OpenPS(F) -- test 2 display dialog "test 2" OpenPS(SF) on OpenPS(L) tell application "Adobe Photoshop CS3" -- à corriger avec ta version open L delay 2 -- attente de 2 secondes display dialog "le fichier doit être ouvert" -- vérifier avant de cliquer OK que l'image est bien ouverte end tell end OpenPS Il y a 2 lignes OpenPS, l'une avec le paramètre F, et l'autre avec SF. Lance ce script qui te demande de choisir une image (elle ne sera pas modifiée, pas de crainte). Tu dois voir le dialogue "test 1", puis l'image doit s'ouvrir. Si tu as une erreur, c'est que le premier "OpenPS(F)" ne fonctionne pas chez toi. Si tu n'as pas d'erreur, vérifie que l'image s'ouvre bien dans Photoshop. Tu auras alors le dialogue "test 2" et sans doute alors une erreur. Confirme moi. Si, par contre, juste après l'affichage "test 1", tu as une erreur et que l'image ne s'est pas ouverte, corrige le script en supprimant la ligne "OpenPS(F)" et relance le script. Tu devras alors avoir un dialogue "test1", puis "test2" et cette fois l'image doit s'ouvrir. Sur la version CS3 que j'ai, c'est seulement le test 2 qui fonctionne et pas le 1. Cela signifie que la commande "open" de Photoshop CS3 a besoin du fichier en string et non pas de son alias. Mais il se peut que la version CS5 demande désormais l'alias et pas le string. Plus tu sera précis dans ta réponse, plus je pourrai t'aider. A+ -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
7 Sep 2016, 09:01
Message
#11
|
|
Adepte de Macbidouille Groupe : Membres Messages : 171 Inscrit : 15 Mar 2008 Lieu : Lorraine Membre no 110 156 |
Bonjour,
Dans la version CS5 et CS6 pour ouvrir un fichier la commande est : open file "Chemin du fichier en string" open ouvre le logiciel mais pas le fichier. -------------------- Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6) Imac 24 M3 2023 Ram 24Go macOS Sonoma 14.3 |
|
|
7 Sep 2016, 17:28
Message
#12
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 264 Inscrit : 7 Dec 2013 Lieu : Ile de France Membre no 188 169 |
Merci Zeltron54 !
@Speed Moock : il faut donc ajouter le mot "file" entre le "Open" et le "SFichier" dans le script complet. Compte tenu de l'aide de Zeltron54, le test avec le petit script envoyé ce matin n'est plus nécessaire. -------------------- iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8 iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11 Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8 |
|
|
7 Sep 2016, 21:52
Message
#13
|
|
Adepte de Macbidouille Groupe : Membres Messages : 42 Inscrit : 30 Aug 2016 Membre no 199 619 |
Bonsoir,
Avec la précision apportée par Zeltron ça fonctionne à merveille )))) Désolé PBell pour ne pas avoir donné assez de détails, j'y songerai à l'avenir. Merci Messieurs ! Je rajoute 2 unités à mon ardoise à bière. A bientôt |
|
|
12 Dec 2016, 19:03
Message
#14
|
|
Adepte de Macbidouille Groupe : Membres Messages : 139 Inscrit : 6 Oct 2012 Membre no 179 488 |
Bonjour,
Je viens de tomber sur ce post et il m'intéresse. J'utilise moi aussi des scripts photoshops pour des lots d'images. Cependant j'aimerais automatiser certaines taches en amont de l'utilisation des scripts. Ma question principale est, est-il possible de savoir quand l'application d'un script est terminé ? Je ne parle pas du script en lui même mais l'application du script sur le lot d'image. Pour plus de détail voila comment je procède actuellement: En fait j'ai un dossier avec des images de références (brutes), je duplique ce dossier deux fois et applique un script1 à la première copie et une fois que c'est fini j'applique un script2 à la deuxième copie. J'aimerais automatiser tout cela. Mais je pense que le premier point clé à résoudre est celui cité plus haut. Car on ne peut pas lancer deux scripts photoshop en même temps. Voilà ! Si mon problème est simple à résoudre, j'ai aussi une autre étape importante à ajouter, c'est de rajouter un lettre à la fin de chaque fichier dont j'ai appliqué le script.( je n'ai pas trouvé comment inclure ce besoin dans le script photoshop lui même). Actuellement j'utilise un soft de renommage par lot mais cela devient pompeux malgré ça très grande aide. Info technique: - Photoshop CS6 - Maverick - Les scripts sont sous forme de droplets enregistrés dans un dossier à la racine du disque pour aller les chercher facilement. ( au passage autre demande accessoire: avant, sous snow léopard, mes droplets étaient proposés automatiquement dans la fenêtre qui apparait en fesant clique droit sur un ficher, puis "ouvrir avec...".Ils apparaissaient alors en dessous des applications proposées pour ouvrir le fichier. C'était super pratique. Si vous savez comment rétabllir ceci je suis preneur) En vous remerçiant ! |
|
|
Nous sommes le : 27th April 2024 - 01:53 |