Sujet: Scripts sous Photoshop

Modérateur: Modérateurs

Poster une réponse

Scripts sous Photoshop

par Dormeur74 » Lundi 10 Août 2015 17:53

Quand on a des tâches répétitives à effectuer, on a trois possibilités :
- la plus simple consiste à faire une macro (enregistreur d'actions = fichier .atn)
- la deuxième consiste à utiliser directement le Listener fourni avec Photoshop
- la troisième (si un retraité de 1993 peut y arriver, c'est à la portée de tout le monde) consiste à taper du code sous Javascript. Si vous le voulez bien, on oubliera vbScript (qui ne fonctionne que sous Windows) et AppleScript qui ne fonctionne que sous Mac/OS. Javascript fonctionne partout, y-compris sous Linux.

Exemple de traitements informatiques possibles sous Photoshop :
A - mettre un passe-partout de 5% autour d'une photo dans la couleur de son choix
B - mettre une marque au centre d'une photo, proportionnelle à la largeur en pixels de la photo, dans une police publique et avec une opacité acceptable pour le visiteur
C - combiner A et B
D - optimiser par lot des photos en haute résolution en basse résolution dans la définition {x,y} de son choix.
E - utiliser le "Listener" de Photoshop lorsque l'interpréteur Javascript de Photoshop est à la rue.

S'il y a des besoins, il y aura, probablement toujours une solution à votre problème, car nous sommes de plus en plus nombreux à utiliser les galeries souterraines d'Adobe.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Publicité

Re: Scripts sous Photoshop

par autka » Mercredi 12 Août 2015 10:49

C'est quand même super intéressant comme info
Et puis ça aide beaucoup :clap: :clap: :clap:

autka

..........
..........

Messages: 7

Inscription: 27 Nov 2008

Localisation: 71

par Dormeur74 » Mercredi 12 Août 2015 10:56

Si ça t'intéresse, on peut démarrer à zéro ici avec des trucs tout simples au départ.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Scripts sous Photoshop

par Akkarin » Mercredi 12 Août 2015 11:36

Moi suis très Interesse aussi!
Bonne idée d'ouvrir un fil pour l'utilisation de toshop

Photos: 1912
Akkarin

PIXELISTES
PIXELISTES

Messages: 11597

Inscription: 23 Juil 2011

Boitier 1: - Nikon D800

Objectif 1: - Sigma 35mm f/1.4 DG HSM

Objectif 2: - Voigtlander 90mm f/3.5 SL II Apo-Lanthar

Objectif 3: - Micro Nikkor AI-S 55mm f/3.5 Micro

Objectif 4: - Nikkor 85mm f/1,8G AF-S

Objectif 5: - Nikkor 105mm f/1.8 AI-S

Objectif 6: - Nikkor 70-200mm f/4 ED AF-S VR

Re: Scripts sous Photoshop

par Dormeur74 » Mercredi 12 Août 2015 14:00

Alors on peut démarrer demain matin (13 août 2015). On prendra comme base CS5, car les moteurs antérieurs manquent un peu de capacité. Dites-moi juste quelles sont les versions de PS que vous utilisez.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Scripts sous Photoshop

par Akkarin » Mercredi 12 Août 2015 15:37

Ok super!
Moi j'utilise Photoshop CS6

Photos: 1912
Akkarin

PIXELISTES
PIXELISTES

Messages: 11597

Inscription: 23 Juil 2011

Boitier 1: - Nikon D800

Objectif 1: - Sigma 35mm f/1.4 DG HSM

Objectif 2: - Voigtlander 90mm f/3.5 SL II Apo-Lanthar

Objectif 3: - Micro Nikkor AI-S 55mm f/3.5 Micro

Objectif 4: - Nikkor 85mm f/1,8G AF-S

Objectif 5: - Nikkor 105mm f/1.8 AI-S

Objectif 6: - Nikkor 70-200mm f/4 ED AF-S VR

par Dormeur74 » Mercredi 12 Août 2015 20:40

Alors c'est parti. Je vais essayer de faire simple. Si vous butez sur un point, n'hésitez pas à poser les questions qui vont bien. Sur l'ensemble de la communauté, il y aura probablement toujours une âme charitable pour proposer une solution.

On va commencer par le plus simple, l'immortel : "hello world !"
Vous créez sur votre disque dur le dossier c:\PSscript

Vous téléchargez et vous installez, si ce n'est déjà fait, l'excellent Notepad++
Vous lancez ce logiciel et vous tapez les lignes de code suivantes :

Code: Tout sélectionner
// MAC Finder ou WINDOWS Explorer, on autorise le double clic et on fait passer Photoshop au 1er plan
#target photoshop
app.bringToFront();
alert("Hello world !");


On verra un peu plus loin le contenu des instructions envoyées à l'interpréteur de Photoshop.
Vous sauvegardez ce fichier dans le dossier c:\PSscript sous le nom de "hello_world.jsx"

L'extension .jsx est connue de l'interpréteur de scripts de Photoshop, qui saura qu'il s'agit d'un script en Javascript qui fonctionne aussi bien sous Windows que sous Mac/OS. Ce qui ne serait pas le cas si on utilisait Visual Basic (monde Windows) ou AppleScript (monde Mac).

Vous lancez Photoshop et vous sélectionnez la fonction Fichier>Scripts>Parcourir... et à l'aide du navigateur vous sélectionnez le fichier c:\PSscript \hello_world.jsx

Vous aurez un petit message comme celui-ci :
etape001.jpg
Votre premier succès
etape001.jpg (11 Kio) Vu 2617 fois


Si vous en êtes là, je puis vous assurer que vous avez fait un très grand pas dans les chemins discrets de Photoshop.

En règle générale, je suis plutôt du matin (7h00). Mais comme je dois partir cette nuit à 4h00, autant publier ce "premier pas" ce soir.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

J+1

par Dormeur74 » Vendredi 14 Août 2015 6:52

Parmi les outils fournis avec Photoshop, il y a un outil particulièrement utile, c'est l'ExtendScript Toolkit. Il s'agit-là d'un environnement de développement beaucoup plus puissant que le Notepad++ pour développer ses scripts. Il est commun à la majorité des logiciels d'Adobe (Illustrator, Bridge, Premiere et Photoshop pour n'en citer que quelques uns). Cet environnement reconnaît 3 types de langages :
- AppleScript (Mac/OS = fichiers .scpt)
- VBScript (Windows = fichiers .vbs)
- Javascript (toute plateforme = fichier .jsx). Comme déjà dit, mieux vaut développer ses scripts en Javascript si on veut qu'ils fonctionnent partout.

On va commencer par créer sur le bureau un lien avec le logiciel ExtendScript Toolkit qui se trouve dans le sous-dossier Adobe...Adobe Utilities CS(?)...ExtendScript Toolkit CS(?).

Vous lancez Photoshop, vous le réduisez et vous double-cliquez sur cette icone :

icone.jpg
Icône d'ExtendScript Toolkit
icone.jpg (4.39 Kio) Vu 2606 fois


Vous créez un nouveau script (Fichier...Nouveau) et vous collez dedans le script ci-dessous :
Code: Tout sélectionner
//  L'instruction qui suit permet de cliquer à partir de Mac Finder ou de Windows Explorer et
#target photoshop
/*
     Notez les détails suivants :
     - les remarques  sont en vert (couleur par défaut)
     - elles commencent par un double slash lorsqu'elles tiennent sur une seule ligne
     - elles sont encadrées par une balise d'ouverture / * et une balise de fermeture * / lorsqu'elles comprennent plusieurs lignes
*/
// L'instruction qui suit permet d'effectuer un double clic et de faire passer Photoshop au premier plan
app.bringToFront();


// On reprend le code déjà vu, légèrement modifié :
var message = "Hello World !";
alert(message);


Quelques remarques avant d'exécuter ce script :
- on vient d'introduire la notion de variable. Qu'elles soient numériques (nombres uniquement) ou alphanumériques (textes et nombres) prenez l'habitude de toujours déclarer vos variables, même si Javascript est assez souple de ce côté-là. Pour déclarer une variable on utilise le mot réservé "var" (minuscules obligatoires) suivi du nom de la variable.
- on peut donner un contenu à une variable lors de sa déclaration, mais on n'est pas obligé de le faire.
En effet, on aurait pu tout aussi bien écrire :
Code: Tout sélectionner
    var message;
    message = "Hello World !";
    alert(message);

Inconvénient, c'est plus long.

Dans la capture d'écran ci-dessous, repérez la flèche verte entourée de rouge.

exe.jpg
exe.jpg (27.04 Kio) Vu 2606 fois


Cliquez sur cette flèche.
Votre message s'est affiché. Vous n'avez donc plus à sauvegarder votre script au format .jsx et à le lancer à partir de Photoshop pour le tester. ExtendScript Toolkit dispose d'une commande d'exécution intégrée et d'un debugger qui vous signalera les erreurs si vous en commettez. Si vous voulez tester ce debugger, mettez un "V" majuscule au mot réservé "var" ; il va changer de couleur (noir au lieu de bleu) et vous aurez une erreur à l'exécution signalée en bas et à gauche de l'interface : "Attendu :;".
Notez enfin que chaque ligne d'instruction se termine par un point-virgule.

On va en rester là pour aujourd'hui.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Scripts sous Photoshop

par schreko13 » Vendredi 14 Août 2015 7:15

Bravo pour l'ouverture de ce fil. :clap:
Bien que ne disposant que d'un vieux toshop ( Version 7 !!! ) et de Elements11, je m'abonne car je suis sûr qu'il y aura bien des choses à apprendre . :yes:
Bonne journée à tous :coucou2:

Photos: 787
schreko13

Pixelistes
Pixelistes

Messages: 4995

Inscription: 26 Déc 2011

Localisation: Marseille 13008

Boitier 1: - Nikon D90

Boitier 2: 1 - Canon

Boitier 3: - Nikon D5200

Objectif 1: - Samyang 14mm f/2.8 IF ED MC Aspherical

Objectif 2: - Nikkor 50mm f/1.8G AF-S

Objectif 3: - Micro-Nikkor 105mm f/2.8G AF-S VR IF-ED

Objectif 4: - Nikkor 18-200mm f/3.5-5.6 ED-IF AF-S VR DX

Objectif 5: - Sigma 120-400mm f/4.5-5.6 DG OS HSM

Objectif 6: - Nikkor 18-55mm f/3.5-5.6G ED AF-S DX II

Flash 1: - Nikon SB-R1

Flash 2: - Nikon SU-800

Ancien 'fana' dans les sixties (Nikon, Blad) et après 30 ans d'arrét de la photo..... je découvre le numérique et l' AF !!!! un rien d' évolution ! enfin.... juste une révolution...quoi !?!?!?

Re: Scripts sous Photoshop

par Dormeur74 » Vendredi 14 Août 2015 7:42

Merci schreko13.
Effectivement, le langage de script a vu le jour sous CS2 et n'a cessé d'évoluer depuis. On peut dire aujourd'hui qu'il arrive, sous CC, dans une phase vraiment opérationnelle.
7.0 est limité à l'enregistreur d'actions (fichiers .atn), mais on peut déjà faire pas mal de choses avec les macros.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

par Akkarin » Vendredi 14 Août 2015 9:20

Bonjour Dormeur!

Bon, voilà suis déjà perdu :hein570:

"Je connais" (entre guillemets car je connais pas grand chose :mrgreen:) la création de scripts avec le petit point rouge sur photoshop qui permet d'enregistrer une série de de manipulations, une fois cette série terminé on stop l'enregistrement et voilà, c'est dans la boite...

La, j'ai l'impression que c'est plus des codages informatiques à rentrer sur photoshop, mais est ce la même chose?

Et à quoi cela correspond ...

Dormeur74 a écrit:Parmi les outils fournis avec Photoshop, il y a un outil particulièrement utile, c'est l'ExtendScript Toolkit. Il s'agit-là d'un environnement de développement beaucoup plus puissant que le Notepad++ pour développer ses scripts. Il est commun à la majorité des logiciels d'Adobe (Illustrator, Bridge, Premiere et Photoshop pour n'en citer que quelques uns). Cet environnement reconnaît 3 types de langages :





En clair ??

Désolé mais suis perdu :oops:

Photos: 1912
Akkarin

PIXELISTES
PIXELISTES

Messages: 11597

Inscription: 23 Juil 2011

Boitier 1: - Nikon D800

Objectif 1: - Sigma 35mm f/1.4 DG HSM

Objectif 2: - Voigtlander 90mm f/3.5 SL II Apo-Lanthar

Objectif 3: - Micro Nikkor AI-S 55mm f/3.5 Micro

Objectif 4: - Nikkor 85mm f/1,8G AF-S

Objectif 5: - Nikkor 105mm f/1.8 AI-S

Objectif 6: - Nikkor 70-200mm f/4 ED AF-S VR

par Dormeur74 » Vendredi 14 Août 2015 10:33

Je reprends le 1er paragraphe de mon premier message :

Quand on a des tâches répétitives à effectuer, on a trois possibilités :
- la plus simple consiste à faire une macro (enregistreur d'actions = fichier .atn)
- la deuxième consiste à utiliser directement le Listener fourni avec Photoshop
- la troisième (si un retraité de 1993 peut y arriver, c'est à la portée de tout le monde) consiste à taper du code sous Javascript. Si vous le voulez bien, on oubliera vbScript (qui ne fonctionne que sous Windows) et AppleScript qui ne fonctionne que sous Mac/OS. Javascript fonctionne partout, y-compris sous Linux.


Le plus simple, mais aussi le moins puissant, correspond à l'outil dont tu parles (un bouton avec un point rouge au centre). C'est un enregistreur d'actions ou de macro-commandes (c'est la même chose) ; tu lances l'enregistrement, tu fais tourner, par exemple, une photo à 90°, tu la sauvegardes en l'optimisant pour le Web, et tu arrêtes l'enregistrement. Ce sont des "actions". Lorsque ta série d'actions est au point, tu peux la sauvegarder sous la forme d'un fichier, dans un s/dossier prévu à cet effet de Photoshop (../Presets/Actions/). Il portera l'extension .atn.

Ce que nous venons d'attaquer, ce ne sont pas des actions, mais des scripts. C'est de la programmation en Javascript.
Voici une copie d'écran de ce que l'on peut faire en Javascipt (programme d'Habaki, un fin connaisseur) :

interface.jpg
Interface
interface.jpg (66.66 Kio) Vu 2576 fois


Comme tu peux le constater, il s'agit de tout autre chose.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Scripts sous Photoshop

par Dormeur74 » Samedi 15 Août 2015 7:08

Plus personne ?

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Scripts sous Photoshop

par Akkarin » Samedi 15 Août 2015 7:11

Salut Dormeur!
Merci pour ces précisions, j'y vois un peu plus clair maintenant ;)

Photos: 1912
Akkarin

PIXELISTES
PIXELISTES

Messages: 11597

Inscription: 23 Juil 2011

Boitier 1: - Nikon D800

Objectif 1: - Sigma 35mm f/1.4 DG HSM

Objectif 2: - Voigtlander 90mm f/3.5 SL II Apo-Lanthar

Objectif 3: - Micro Nikkor AI-S 55mm f/3.5 Micro

Objectif 4: - Nikkor 85mm f/1,8G AF-S

Objectif 5: - Nikkor 105mm f/1.8 AI-S

Objectif 6: - Nikkor 70-200mm f/4 ED AF-S VR

Re: Scripts sous Photoshop

par Dormeur74 » Samedi 15 Août 2015 11:02

Alors on passe aux choses sérieuses.

On va aborder une notion des plus importantes : les unités de Photoshop.
Si vous allez dans Edition...Préférences...Unités et Règles, vous allez voir deux listes déroulantes :

unites.jpg
unites.jpg (8.94 Kio) Vu 2543 fois


La première liste (Règles) concerne la taille des images et la seconde (Type) les textes.
Dans l'exemple ci-dessus, l'utilisateur travaille en points. Nous ne toucherons pas au Type dans l'immédiat. En revanche, on va réaliser un petit script qui :
- mémorise les Règles de l'utilisateur,
- modifie ces règles pour pouvoir travailler en pixels,
- demande à l'utilisateur d'ouvrir un dossier contenant des photos,
- affiche une à une les dimensions et la résolution des photos en questions,
- restaure en final les règles initiales de l'utilisateur.
Pour commencer :
- créez le dossier ../_Tuto sur la racine de votre disque dur (sans oublier l'underscore, pour que ce dossier s'affiche au sommet de la liste dans votre navigateur)
- copiez dedans le nombre de photos de votre choix et changez-en manuellement les dimensions et la résolution), prenez des photos horizontales et verticales.
- copiez le code ci-dessous dans ExtendScript Toolkit et lancez-le.

Code: Tout sélectionner
#target photoshop
app.bringToFront();

var reglesUtilisateur = app.preferences.rulerUnits; // 1
app.preferences.rulerUnits = Units.PIXELS; // 2
var dossier = Folder.selectDialog("Sélectionnez le dossier _Tuto : "); // 3
var liste = dossier.getFiles(/\.(jpg|jpeg|tif|psd|)$/i); // 4

for (var i= 0;i<liste.length;i++)  // 5
{ // 6
    var docRef = open(liste[i]); // 7
    var docName  = docRef.name; // 8
    var largeur = app.activeDocument.width; // 9
    var hauteur = app.activeDocument.height; // 10
    var resolution = app.activeDocument.resolution; // 11
    var infos = "Nom de la photo : "+docName // 12
    infos += "   Largeur = "+largeur // 13
    infos += "   Hauteur = "+hauteur // 14
    infos += "   Résolution = "+resolution+" ppp"; // 15
    alert(infos); // 16
    docRef.close(); // 17
} // 18

app.preferences.rulerUnits = reglesUtilisateur; //  19


Quelques explications :
1 - on mémorise la préférence de l'utilisateur. Notez le .app qui veut dire application et qui fait référence à Photoshop
prenez pour habitude de choisir des noms de variable facile à identifier. La première lettre est en minuscules, la majuscule permet de séparer les mots. reglesUtilisateur est composé des mots regles et Utilisateurs. Ne mettez jamais d'accents ou d'espaces dans vos noms de variables
2 - on change, d'autorité, cette préférence en mettant les pixels puisqu'on va travailler sur des images
3 - on va donner comme contenu à la variable "dossier"" le chemin absolu choisi par l'utilisateur
4 - on met dans le tableau "liste" le nom de toutes les photos portant l'extension jpg, jpeg, tif et psd trouvées dans le dossier cible
5 - lorsqu'on connaît la dimension d'un tableau (donnée ici par liste.length) on peut utiliser une boucle du type for {0,<dimension,i++}. La 1ère valeur d'un tableau est toujours 0 et la dernière est toujours la dimension -1. i++ est un compteur qui va s'incrémenter d'une unité à chaque boucle.
6 - un accolade d'ouverture annonce un bloc d'instructions. S'il n'y avait qu'une seule instruction, on se passerait d'accolades
7 - on ouvre (open) dans Photoshop la 1ère image du tableau (rang = 0)
8 - on mémorise dans la variable docName le nom de l'image avec son extension
9 à 11 - on mémorise dans trois variables différentes la largeur, la hauteur (en pixels) et la résolution de l'image (en points par pouce)
12 à 15 - on met dans la variable infos les résultats obtenus. Notez que le signe "+" permet de mettre bout à bout plusieurs variables alphanumériques. On appelle cela une concaténation.
16 - on affiche les valeurs trouvées pour la photo chargée
17 - on referme dans Photoshop le document actif (la photo)
18 - l'accolade de fermeture annonce la fin du bloc d'instructions. On boucle sur la photo suivante.
19 - il n'y a plus de photo à traiter dans le dossier, on restaure la valeur des règles de l'utilisateur trouvée en début de script.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Poster une réponse
Suivante

Poster une réponse

Citer la selection
 

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités