Premessa!

Uno degli aspetti più potenti, ed allo stesso tempo meno conosciuto, di Adobe Photoshop è la possibilità di creare script personalizzati per migliorare il nostro workflow di lavoro.
Innanzi tutto, cosa sono gli script? A differenza delle azioni (più semplici ma limitate) gli script sono la vera colonna portante del programma e ci permettono di creare nuove funzioni o di modificarne/migliorarne quelle già esistenti. Dietro ogni comando, filtro, pannello esiste già quindi uno script, più o meno complesso. Con questo semplice tutorial vedremo come creare il nostro primo script grazie all'applicazione ExtendScript Toolkit (arrivata oggi alla versione CS5) e che troverete installata insieme a Photoshop.

Iniziamo...

Per iniziare, assicuriamoci che stiate creando uno script per la vostra versione di Photoshop. Dal primo menu a discesa in alto a sinistra scegliamo appunto la versione che avete installato e cliccate su Yes per aprire il programma nel caso non sia ancora aperto. Da questo momento in avanti, per testare il vostro script potrete usare il pulsante Play in alto a destra.

Immagine inserita

Come linguaggi di programmazione Adobe permette di utilizzare VBScript, Applescript e Javascript; noi andremo ad utilizzare quest'ultimo, l'unico dei tre che non presenta diversità a seconda che utilizziate mac o pc, e quindi l'unico multipiattaforma. Cerchiamo ora di pensare ad uno script semplice ma che possa tornare utile durante il lavoro...

Regola dei terzi (Rule of 3rd)

Creiamo uno script che divida esattamente il nostro canvas con delle guide, secondo la famosa regola dei terzi. Potreste farlo a mano ogni volta che vi serve; prendete la calcolatrice, dividete per 3 altezza e larghezza del documento e inserite una nuova guida esattamente ai valori trovati. Oppure potete creare uno script che lo faccia per voi. Proviamo a pensare come generare del codice sensato ancora prima di scriverne una riga. Se ad esempio dicessimo a photoshop di aggiungere una guida all 33% dell'immagine e una al 66% sia in verticale che in orizzontale sarebbe un grave errore visto che matematicamente il 33% non è esattamente 1/3. Per aggiungere la guida corretta dovremmo andare su View -> New Guide... e inserire 33,3333(...periodico) %. Probabilmente funzionerebbe ugualmente ma non è sicuramente la via più elegante ne quella più sicura di farlo (più grande è il nostro file più grande è il nostro 0,00003(...periodico)% di errore). Vediamo quindi come creare lo script.

Cominciamo col calcolare quanto misura 1/3 della larghezza del nostro documento.

var thirdWidth = app.activeDocument.width/3;

Facciamo chiarezza su questa prima riga di codice.

  • var quando definiamo una nuova variabile la sintassi è var x = qualcosa;
  • thirdWidth è il nome della nostra variabile. Scegliete sempre qualcosa attinente alla variabile stessa.
  • app.activeDocument fa in modo di interagire con il documento su cui state lavorando (activeDocument) in photoshop (app).
  • .width/3 è riferito al documento attivo e ne specifica la larghezza. Aggiungendo /3 la divideremo appunto 3 volte.
  • ; il punto e virgola delinea la fine di una riga di codice. Se non lo inserite, il programma prenderà la prossima riga di codice e la unirà alla precedente, creando ovviamente un errore.


Abbiamo quindi ora una variabile thirdWidth che misura 1/3 del nostro canvas. Facciamo la stessa cosa con l'altezza.

var thirdHeight = app.activeDocument.height/3;

E' arrivato il momento di aggiungere le guide!

activeDocument.guides.add (Direction.VERTICAL, thirdWidth);

Questa riga di codice è molto semplice:

  • activeDocument.guides.add non è altro che il comando per aggiungere delle guide al documento attivo, dovremo dire ora dove le vogliamo aggiungere.
  • Direction.VERTICAL è la direzione a cui vogliamo aggiungere la guida.
  • thirdWidth ritroviamo la nostra variabile per la larghezza, Ovviamente sta ad indicare di quanto spostare la guida partendo da 0.

Il codice completo quindi sarà:

var thirdWidth = app.activeDocument.width/3;
var thirdHeight = app.activeDocument.height/3;
activeDocument.guides.add (Direction.VERTICAL, thirdWidth);
activeDocument.guides.add (Direction.VERTICAL, thirdWidth*2);
activeDocument.guides.add (Direction.HORIZONTAL, thirdHeight);
activeDocument.guides.add (Direction.HORIZONTAL, thirdHeight*2);

Salviamo il nostro codice con File -> Salva con nome... e scegliendo Documents\Adobe Scripts come cartella (creiamola nel caso non esista); scegliamo un nome a piacimento, in questo caso ruleof3rd.jsx.

Torniamo in Photoshop e assicuriamoci di avere un documento qualsiasi aperto. Andiamo nel pannello Azioni e creiamone una nuova chiamandola Rule of 3rd; premiamo su Record e dal pannello File -> Scripts -> Open script... andiamo a cercare il file ruleof3rd.jsx appena salvato.

Immagine inserita

Verranno in automatico create le guide corrette. Ricordatevi ora di stoppare la registrazione cliccando su Stop. D'ora in poi, quando vorrete suddividere la pagina basterà cliccare sull'azione e in automatico il programma farà tutto da solo.

Gestione degli errori

Il codice appena creato funziona nel caso abbiate un file già aperto. E se per sbaglio cliccaste sull'azione senza nessun canvas attivo vi tornerebbe indietro un errore. Come fare quindi a gestire gli errori? Come rendere il vostro primo script un attimo più "professionale"?

Concettualmente dovete:
  • Controllare che ci sia un documento aperto
  • Se non è aperto nessun documento dare un messaggio di errore
  • Se cè un documento aperto applicare la regola dei terzi

Vediamo il codice per la prima parte:

if (!app.documents.length > 0) {
alert("Non hai un documento aperto.");
}

e analizziamolo:

  
  • if( a > b ) {allora succede qualcosa} L'if è basilare. Se "a" è maggiore di "b", fai la cosa scritta tra parentesi graffe. In questo caso se la dimensione del documento è minore di 0, dai un messaggio di allerta. Potrà sembrarvi sbagliato visto che abbiamo usato il segno > e non il segno < però non vi deve sfuggire il punto esclamativo ad inizio variabile. "!" nella maggior parte dei linguaggi di programmazione inverte il senso dell'enunciato. Per esempio il contrario di = è !=.
  • app.documents.length è appunto la dimensione del documento
  • alert("messaggio."); fa comparire un pop-up con il testo che inserite tra virgolette

Proseguiamo ora con la seconda parte, in cui applichiamo la regola dei terzi nel caso in cui ci sia un documento attivo.

else {
var thirdWidth = app.activeDocument.width/3;
var thirdHeight = app.activeDocument.height/3;
ruleof3rd (thirdWidth, thirdHeight)
}

Semplicemente usiamo else {} a seguito dell'if. Se l'if non è andato a buon fine quindi il codice che viene letto è quello dentro le parentesi graffe dell'else. In questo caso vengono calcolate le due variabili di prima e viene richiamata una funzione.


Cosè una funzione? Una funzione è una porzione di codice strutturata in modo da ricevere eventuali variabili in entrata e con esse produrre dei risultati o ritornare a sua volta variabili. Per esempio se volessimo creare una funziona Somma per sommare 2 numeri A e B dovremmo scrivere:

function Somma (a, B)
{
return a+b;
}

e dovremmo richiamarla con:

Somma(2, 5)

se volessimo sapere la somma di 2 e 5.

Creare funzioni è utile perchè ci permette di creare codice riutilizzabile e facilmente modificabile. Per finire la nostra funzione sarà quindi:

function ruleof3rd (width, height)
{
activeDocument.guides.add (Direction.VERTICAL, thirdWidth);
activeDocument.guides.add (Direction.VERTICAL, thirdWidth*2);
activeDocument.guides.add (Direction.HORIZONTAL, thirdHeight);
activeDocument.guides.add (Direction.HORIZONTAL, thirdHeight*2);
}

Risalvate e testate di nuovo lo script per essere certi del funzionamento.
A questo link trovate lo script scaricabile, con i controlli per vedere se stiamo lavorando sul Layer 0, solitamente lockato. Scaricatelo e cercate di studiare il codice rimanente da soli; nel caso qualcosa non funzionasse scrivete qui sotto nei commenti! Alla prossima!

www.stateofartacademy.com

---
Questo articolo è stato importato automaticamente dal forum il 31/lug/2014
Per vedere il post originale e/o i commenti sul forum prima di quella data clicca qui