Automatisation puissante des tâches avec les scripts Photoshop

Les actions sont très populaires. Ils sont faciles à utiliser et peuvent vous faire gagner beaucoup de temps, mais en fin de compte, ils ne sont pas très puissants et offrent une très faible polyvalence. C'est là que les fonctionnalités de script de Photoshop entrent en action. Nous allons vous montrer les possibilités presque infinies qu'offrent les scripts Photoshop.


Actions vs Scripts

Une action est simplement un moyen d’enregistrer une série d’étapes afin que nous puissions les lire encore et encore. Si vous voulez pouvoir dessiner rapidement un carré rouge de 50 x 50 pixels en appuyant sur un bouton, enregistrez-vous en le faisant une fois, puis lancez l'action à chaque fois que vous en avez besoin. Vous avez terminé. Mais que se passe-t-il si vous avez parfois besoin d'un carré rouge de 50 pixels et d'autres fois d'un carré bleu de 100 pixels? Eh bien, vous devez enregistrer une autre action pour le deuxième chiffre. Les actions offrent une très faible polyvalence, car les étapes enregistrées sont statiques - leur comportement ne change pas en fonction de variables externes.

Les scripts Photoshop vous permettent d'ajouter logique conditionnelle, afin que le script prenne automatiquement des décisions en fonction de la situation actuelle ou de la saisie de l'utilisateur. Par exemple, dans l'exemple précédent, un script Photoshop pourrait demander à l'utilisateur la largeur et la couleur du carré.,
et ensuite le rendre correctement. En outre, les scripts offrent de nombreux autres avantages par rapport aux actions, tels que la gestion avancée des fichiers, la prise en charge de plusieurs applications, etc..


Notions de base sur les scripts Photoshop

Un script Photoshop est un fichier texte avec un code qui indique au programme d'effectuer certaines tâches. Ces scripts peuvent être écrits dans trois langages de script différents. Si vous utilisez Mac OS, vous pouvez utiliser AppleScript et JavaScript. Sous Windows, vous pouvez également utiliser VBScript et JavaScript. Étant donné que JavaScript est entièrement pris en charge sur les deux plates-formes, il s'agit du meilleur choix pour garantir que notre script atteigne le public le plus large. Nous allons donc nous concentrer sur ce sujet tout au long de cet article. En outre, JavaScript est le langage de script côté client le plus populaire. Il est donc probable que vous en ayez déjà entendu parler..

Le moteur de script de Photoshop nous permet de manipuler les différents éléments de l'application, tels que les calques, les guides, les canaux, les documents, etc. Presque chaque élément de Photoshop peut être examiné et modifié à partir d'un script. Celles-ci sont reflétées dans le modèle d'objet de document Photoshop. Dans cet article, nous allons travailler avec quelques éléments de base, mais il y en a beaucoup, vous pouvez tous les voir dans la documentation officielle de Photoshop..

Un programme appelé Adobe ExtendScript Toolkit CS5 est fourni avec Photoshop. Il s'agit d'un environnement de développement intégré pour les scripts, non seulement pour Photoshop, mais pour tous les membres de Creative Suite. Pour simplifier les choses, nous allons utiliser un éditeur de texte tel que Notepad, mais pour les gros scripts, Adobe ExtendScript Toolkit propose de nombreux outils, tels que le remplissage automatique de code, l'aide intégrée et un débogueur..

Alors, sans plus tarder, allons dans votre dossier Presets / Scripts de votre répertoire Photoshop, créez un fichier texte vide appelé firstScript.jsx et ouvrez-le avec votre éditeur de texte préféré..


Que se passe-t-il dans l'application, reste dans l'application

Lorsque nous traitons avec des scripts Photoshop, tout commence par l'objet "app". Il représente l'application et contient tous les autres objets de manière hiérarchique. Dans cette première étape, nous allons examiner quelques propriétés de base de l'objet "app".

Allez dans l'éditeur de texte et tapez ce qui suit dans firstScript.jsx

alert ("Vous utilisez la version de Photoshop" + app.version);

Puis lancez Photoshop et accédez à Fichier> Scripts> firstScript. Une boîte d’alerte indiquant que vous utilisez la version 12.0.0 de Photoshop (ou la version que vous utilisez) apparaît. La fonction "alerte" affiche un message, une chaîne avec le texte et la version de l'application, lus dans la propriété "version" de l'objet "app". En JavaScript, vous pouvez accéder aux propriétés et aux enfants d'un objet à l'aide du "." comme dans "app.version".

Dans Photoshop, l'environnement de travail de base est le document. L'objet "app" contient une collection appelée "documents", qui représente évidemment l'ensemble des documents ouverts dans Photoshop. Revenons à l'éditeur, remplaçons le contenu de firstScript.jsx par ce qui suit:

if (app.documents.length> 0) alert ("Il y a" + app.documents.length + "documents ouverts");  else alert ("Il n'y a pas de documents ouverts"); 

Si vous lancez le script (Fichier> Scripts> firstScript), le message d'alerte changera en fonction du nombre de documents actuellement ouverts. Le code est très simple, la première ligne vérifie si le nombre de documents ouverts (c'est-à-dire la longueur de l'ensemble de documents dans l'application) est supérieur à zéro, affichant un message avec ce numéro. Sinon, il y a un message disant qu'il n'y a pas de documents ouverts. Facile, n'est ce pas? Mais jusqu'à présent, cela ne semble pas trop utile.


Guider votre travail

Essayons avec un exemple plus utile. Par exemple, supposons que vous souhaitiez diviser votre document en colonnes de taille égale. Faire cela manuellement impliquerait de mesurer la largeur du document, de le diviser par le nombre de colonnes et de placer ensuite les guides avec soin. Et si vous avez besoin de douze colonnes? Ce serait une perte de temps totale. Voyons un morceau de code qui fait ce travail:

 if (app.documents.length> 0) var numberColumns = parseInt (invite ("De combien de colonnes avez-vous besoin?", 5)); var doc = app.activeDocument; var documentWidth = doc.width; var columnWidth = documentWidth / numberColumns; pour (i = 0; i <= numberColumns; ++i) doc.guides.add(Direction.VERTICAL, i * columnWidth);  

Ne pas avoir peur! Le code est très facile. Vous savez déjà ce que signifie la première ligne: "s'il y a au moins un document ouvert, procédez comme suit". La ligne suivante utilise la fonction "prompt" pour demander à l'utilisateur le nombre de colonnes et transmet son résultat à la fonction "parseInt", qui le convertit de manière pratique en un entier. Le résultat est stocké dans la variable "numberColumns". Au cas où vous ne le sauriez pas, les variables sont utilisées dans les langages de programmation pour stocker les valeurs. Par conséquent, si vous souhaitez enregistrer une certaine valeur, vous utilisez une variable..

La troisième ligne crée une nouvelle variable, appelée "doc", qui représente le document actif. La quatrième ligne lit la largeur du document actuel et la stocke dans la variable "documentWidth". La cinquième ligne calcule la largeur de chaque colonne en divisant la largeur totale par le nombre de colonnes. Enfin, la sixième ligne commence une boucle qui se répète une fois par colonne (plus une fois de plus pour le dernier guide). A chaque itération, la variable "i" contiendra le numéro de colonne actuel: 0, 1, 2, 3? La deuxième ligne ajoutera un guide vertical au document actuel, placé au bon endroit.

Pour essayer le code, c'est la même chose qu'avant. Remplacez le contenu de notre fichier firstScript par le code, puis sélectionnez Fichier> Scripts> firstScript..


Modifier tout votre texte en même temps

Vous avez donc créé une superbe conception Web en utilisant le toujours magnifique Helvetica, mais il semble que le client ne l’ait pas fait installer, il préfère Arial. En outre, il souhaite s'assurer que tout le monde connaît le droit d'auteur du matériel, il insiste donc pour ajouter une notification de droit d'auteur dans chaque élément de texte. "Pas de problème, je connais Photoshop Scripting!", Vous répondez. Voyons comment le faire:

 if (app.documents.length! = 0) var doc = app.activeDocument; pour (i = 0; i < doc.artLayers.length; ++i) var layer = doc.artLayers[i]; if(layer.kind == LayerKind.TEXT) layer.textItem.font = "ArialMT"; layer.textItem.contents += " ? 2011 Envato";   

Les deux premières lignes sont déjà connues. Ensuite, il y a un nouvel élément ici, la collection de couches. Dans Photoshop Scripting, il existe deux types de calques: les "jeux de calques", qui sont essentiellement des groupes, et les "calques artistiques", qui incluent tous les autres types de calques: couches normales, couches de texte, couches de réglage, etc. Notre objet document ("app.activeDocument") a une propriété appelée "artLayers", pour accéder uniquement aux couches artistiques, une autre propriété appelée "layerSets" pour accéder aux ensembles de couches, puis une propriété appelée simplement "couches", qui inclut les deux ensembles précédents.

Dans notre code, nous parcourons l'ensemble des couches artistiques de notre document. A chaque itération, nous stockons notre couche actuelle dans la variable "layer", puis nous vérifions si le type de couche est "LayerKind. TEXT", qui représente une couche de texte. Dans ce cas, nous accédons à la propriété textItem de notre couche, qui contient toutes les caractéristiques du texte, et modifions son attribut "font" en "ArialMT" (nous devons utiliser le nom PostScript de la police). De plus, nous ajoutons la notice de copyright au contenu de la couche en utilisant l'opérateur "+ =" sur la propriété "contents".


Qu'il y ait des carrés

Nous avons laissé le plus difficile pour la fin. L'exemple que nous avons proposé au tout début de l'article consistait à avoir un moyen de créer automatiquement des carrés, en choisissant simplement la taille et la couleur. Eh bien, c'est une tâche assez facile pour un script.

if (app.documents.length> 0) var doc = app.activeDocument; var squareSize = parseInt (invite ("Sélectionnez la taille du carré", 50)); var squareColor = new RGBColor; squareColor.hexValue = prompt ("Sélectionnez la couleur du carré (hexadécimal)", "ff0000"); var newLayer = doc.artLayers.add (); newLayer.name = "Square -" + squareSize + "-" + squareColor.hexValue; selectedRegion = Array (Array (0,0), Array (0, squareSize), Array (squareSize, squareSize), Array (squareSize, 0)); doc.selection.select (selectedRegion); doc.selection.fill (squareColor); doc.selection.deselect (); 

C'est le code le plus long que nous ayons vu jusqu'à présent, mais ce n'est pas difficile à comprendre. Dans la troisième ligne, nous demandons à l'utilisateur la taille du carré et le stockons dans la variable "squareSize". Ensuite, nous créons une nouvelle RGBColor pour spécifier la couleur du carré et lisons la valeur hexadécimale à partir de l'entrée utilisateur..

L'étape suivante consiste à créer un calque. Nous accédons au jeu "artLayers" à partir du document actif et utilisons sa méthode "add" pour ajouter un nouveau calque, en enregistrant une référence dans la variable "newLayer". Ensuite, nous changeons son nom en conséquence.

La dernière étape consiste à faire une sélection. Nous créons un tableau de tableaux indiquant les coordonnées de chaque coin de la sélection. Ensuite, nous passons cette région à la méthode "select" de l'objet "selection" du document actif.

Enfin, nous remplissons la sélection en utilisant la couleur précédemment définie, puis nous désélectionnons tout. Notre créateur carré est fini!


Conclusion

Les scripts se sont révélés être beaucoup plus puissants et configurables que les actions. Ils sont certainement un peu plus difficiles à créer, mais les résultats en valent la peine. De plus, il existe une communauté de plus en plus nombreuse et de plus en plus nombreuse, et des bibliothèques complètes pour créer des scripts Photoshop, comme xtools, qui est open source, ont même été créées. Ces bibliothèques essaient de combler certaines lacunes qui nécessiteraient sinon des solutions de niveau inférieur.

De plus, étant donné la popularité croissante des packs d’action à peu d’argent, je pense qu’il pourrait exister un marché émergent pour les packs de script, spécialement
pour les tâches de mise en page complexes et des choses comme ça. J'espère qu'avec cet article, vous avez appris les bases du scripting Photoshop - amusez-vous à écrire vos propres scripts!

P.S.: À présent, c’est une bonne occasion de jeter un coup d’œil sur la série de vidéos NetTuts Javascript de Null, qui vous donnera une bonne compréhension des bases de JavaScript, du début à la fin..