TUTORIEL OUTILS 
Contrôler Photoshop avec JavaScript
Les scripts de Photoshop CS2 apportent une puissance de contrôle jamais atteinte à la suite graphique d'Adobe, via des langages accessibles comme JavaScript. Approche pratique avec deux scripts fonctionnels. (25/04/2006)
Depuis sa version CS, Photoshop propose de créer non plus des Actions (lire notre article du 16/12/05), mais des scripts complets, à l'aide de VBScript, AppleScript ou de JavaScript (lire notre article du 28/02/06). Les possibilités sont alors décuplées, car le développeur de script a accès à l'ensemble des méthodes et objets proposés par l'application, dont certaines fonctionnalités inaccessibles aux actions.

Les avantages à utiliser les scripts plutôt que les actions sont nombreux : travail des fichiers (ouverture, sauvegarde, renommage...), accès à Illustrator CS2 depuis Photoshop CS2, accès à un véritable langage de programmation, notamment aux fonctions conditionnelles ou aux boucles.

Le scripts sont à placer dans le dossier /Presets/Scripts/ du dossier d'installation de Photoshop, sous la forme de fichier texte avec l'extension .jsx (ou .js pour CS). Une fois placé dans ce dossier, il faudra soit redémarrer l'application pour accéder au script depuis le menu Fichier/Scripts, soit passer par le navigateur de scripts de ce même menu.

Ajouter du texte
L'intérêt premier des scripts, comme pour les actions, est de pouvoir appliquer un même traitement à un grand nombre d'images. Nous allons voir tout d'abord un script qui ajout un texte sur la photo ouverte (comme une notice de copyright).

docRef = app.activeDocument;
app.displayDialogs = DialogModes.NO;
app.preferences.typeUnits = TypeUnits.POINTS;

var textColor = new SolidColor;
textColor.rgb.red = 0;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;

today = new Date();
monCopyright = "(c)" + today.getFullYear() + " JDN Développeurs";

var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.contents = monCopyright;
newTextLayer.textItem.position = Array(1, 1);
newTextLayer.textItem.size = 28;
newTextLayer.textItem.color = textColor;


Ce script fait appel à de nombreux objets et méthodes fondamentaux de Photoshop. Près de 80 objets sont accessibles à tout moment, parmi lesquels Document, LayerSet ou encore Selection.

Le document courant est de son côté récupéré via la propriété activeDocument de l'objet app, qui représente Photoshop lui-même. Ce même objet permet de travailler avec les composants du logiciel, comme ses préférences utilisateur ou sa gestion des fenêtres. Nous précisons ici l'unité de taille des polices, et le fait Photoshop n'affiche pas de fenêtre de dialogue.

Avec SolidColor, on peut définir une couleur utilisée dans le document. Nous créons ici la couleur de notre texte. Ce dernier sera placé sur l'image par le biais d'un calque supplémentaire, créé avec la fonction add() de l'objet artLayers de notre document courant. artLayers est un objet regroupant les calques contenant des éléments visuels. Après avoir défini que ce calque graphique était de type textuel (LayerKind.TEXT), on remplit, positionne et place notre texte, qui contient une variable JavaScript reprenant l'année en cours.

Changer la taille de l'image
L'un des traitements courants du webmaster est de modifier la taille d'une image pour la publier sur Internet. Les photos sont de nos jours pris à des résolutions assez hautes (par exemple, 2048*1536), qui ne sont pas exploitables telles quelles sur le Web, particulièrement pour les petites connexions. Le script suivant réduire la taille de l'image, pour mettre le plus long côté à 800 pixels de long.

app.preferences.rulerUnits = Units.PIXELS;
app.displayDialogs = DialogModes.NO;
docRef = app.activeDocument;

var largeur = docRef.width.value;
var hauteur = docRef.height.value;
var tailleVisee = 800;

if (largeur > hauteur) {
  longCote = largeur;
  }
else {
  longCote = hauteur;
  }

var pourcent = (tailleVisee/longCote);
docRef.resizeImage(largeur*pourcent, hauteur*pourcent, 72, ResampleMethod.BICUBIC);


  Forum

Réagissez dans les forums de JDN Développeurs

On reprend ici certains objets de notre premier script, notamment Document, pour utiliser ses propriétés de width et de height, et surtout sa méthode resizeImage(), qui prend en compte parmi ses arguments les nouvelles hauteur et largeur, la résolution de l'image finale, et la méthode utilisée pour recalculer l'image (ici, Bicubic).
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages