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
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 :
Bonjour PBell
Parfait merci.
Je vais tester ça d'ici ce soir mais le besoin a bien été reformulé.
Merci d'avance,
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.
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 :
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...
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.
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.
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,
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" !!
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.
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.
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
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 !
Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)