Crea un calendario usando Scripting in Photoshop

Creare un calendario grafico a mano non è un compito facile. Ecco perché è meglio se riesci a trovare un modo per automatizzare il processo. Nel tutorial di oggi ti mostreremo come generare un anno intero, un calendario di sfondo personalizzato utilizzando JavaScript. Se sei un programmatore di computer, è grandioso, in caso contrario, non ti preoccupare, sarà piuttosto semplice.


Passo 1

Secondo Adobe, uno script è una serie di comandi che indicano a Photoshop di eseguire una o più attività. La prima cosa che devi fare è dare un'occhiata al Reference JavaScript di Adobe. Potete trovare qui. Contiene tutte le proprietà e i metodi dell'oggetto Photoshop CS4 supporta, con esempi, e ti darà un'idea su che tipo di cose puoi fare con lo scripting in Photoshop. Se stai usando una versione precedente puoi trovare i riferimenti qui.


Passo 2

Quindi iniziamo. L'idea principale del progetto è di creare livelli di testo per ogni mese contenenti le date, quindi lavoreremo principalmente con la manipolazione del testo. Apri ExtendScript Toolkit e crea un nuovo file JavaScript (Command + N). Questo conterrà tutti i comandi che forniremo a Photoshop. Se non si desidera utilizzare ExtendScript Toolkit, è possibile utilizzare qualsiasi editor di testo semplice.


Passaggio 3

Per prima cosa dobbiamo definire alcune variabili per gli attributi del documento e la combinazione di colori del calendario. Ho creato il mio documento 1280x800 con una risoluzione di 72 pixel / pollice, l'ho chiamato "PhotoshopScriptCalendar" e ho scelto il 2010 come l'anno del calendario che creeremo.

Questa è la combinazione di colori di base che useremo. "NormalColor" è per i nomi dei giorni della settimana e del mese. Per la domenica ho usato un colore diverso per farli risaltare, questo è "highlightColor", e useremo "backColor" come colore di sfondo del calendario predefinito se non selezioniamo un'immagine personalizzata per quello.


Passaggio 4

Come ho detto prima, lavoreremo principalmente con la manipolazione del testo, quindi dobbiamo definire alcune variabili per il rientro e il testo che useremo ripetutamente, come le intestazioni del mese.

Per impostare un colore diverso per la colonna delle domeniche, dobbiamo renderlo un livello di testo diverso dagli altri giorni. Questo è il motivo per cui abbiamo due intestazioni: "monthHeader" - dal lunedì al sabato, e "sundayHeader". Ognuna di queste due variabili termina con due "\ r". Questi indicano caratteri di nuova riga, come se si premesse il tasto Invio sulla tastiera. Successivamente definiamo la variabile di indentazione. Si noti che il primo di gennaio è un venerdì, quindi per ogni giorno prima è necessario inserire un rientro anziché numeri. Il numero di spazi bianchi di queste variabili dipende dal tipo di carattere che si utilizza e dalla dimensione di esso, quindi sarà necessario un po 'di tracce ed errori prima di procedere correttamente. Infine, fai un elenco di tutti i nomi dei mesi.


Passaggio 5

Ora che abbiamo tutto ciò di cui abbiamo bisogno, possiamo iniziare a creare il documento .psd.

Come puoi vedere, il codice è abbastanza leggibile. Alla nostra applicazione Photoshop, aggiungiamo un nuovo documento con la larghezza, l'altezza, la risoluzione e il nome specificati precedentemente, una modalità colore, e conserviamo il suo riferimento in una nuova variabile "doc". Di default tutti i nuovi documenti sono in RGB, quindi avremmo potuto omettere quel parametro, ma se vuoi CMYK per esempio, potresti usare "NewDocumentMode.CMYK". Lo stesso con LAB, GRAYSCALE e BITMAP. È possibile trovare tutti questi nei riferimenti collegati sopra.

Quindi facciamo una nuova selezione e selezioniamo l'intero documento, lo riempiamo con il nostro colore di sfondo e infine lo deselezioniamo.


Passaggio 6

Successivamente abbiamo bisogno di aggiungere uno sfondo personalizzato da un'immagine esistente. Lo sfondo sfumato del risultato finale pubblicato sopra è in realtà un'immagine separata.

Per questo useremo la funzione openDialog (). Questo apre la finestra di dialogo da "File> Apri" e inserisce nell'array "file" l'elenco delle immagini selezionate. Utilizzeremo solo la prima immagine selezionata che si trova nella matrice "file" nella posizione 0. Quindi, per prima cosa dobbiamo controllare se è stata selezionata qualsiasi immagine.

Successivamente, andremo a caricare l'immagine selezionata nella nostra applicazione e ottenere un riferimento ad esso chiamando "app.activeDocument" che restituisce il documento attivo in Photoshop.

Ridimensiona l'immagine alla nostra larghezza e altezza preferite. Ancora una volta, facciamo una nuova selezione dell'intero documento, copiamo questa selezione e chiudiamo il documento con l'opzione di non salvare le modifiche.

Infine, nel nostro documento del calendario, incolla la selezione. Questo pone l'immagine come primo livello sopra il livello Sfondo. Quindi chiamalo qualcosa come "BackgroundImage".

Si noti che se non è stata selezionata alcuna immagine dalla finestra di dialogo, nessuno di questi comandi sarebbe stato eseguito.


Passaggio 7

OK. Ora arriva la vera generazione del calendario. Questo potrebbe essere un po 'più difficile, ma lo faremo passo dopo passo e speriamo che non sia così difficile da capire.

Dobbiamo fare una serie di azioni per ogni mese dell'anno. Per questo usiamo un ciclo "for". Fondamentalmente, questo prende la variabile "curr", che usiamo per indicare il mese corrente con cui stiamo lavorando, imposta il suo valore iniziale su 0, quindi esegue l'insieme di azioni ripetutamente, incrementando il valore di "curr" ogni volta, fino a quando questo diventa 12. Così attraversando tutti i dodici mesi.

Per prima cosa dobbiamo definire due variabili che useremo per posizionare i nostri mesi nel documento come una griglia. Questi rappresentano gli offset X e Y di ogni mese. Stiamo per mettere 4 mesi su una singola riga, quindi per l'offset X useremo l'operazione "%". Ciò restituisce il resto della divisione di "curr" a 4. Questo offset sarà lo stesso per gennaio, maggio, settembre, per febbraio, giugno, ottobre e così via, per ogni mese nella stessa colonna. Per l'offset Y usiamo la funzione javascript "Math.floor ()" che restituisce il valore più grande, minore del risultato di divisione di "curr" a 4. Quindi per i mesi della stessa riga, l'offset Y è lo stesso.

Alla fine vogliamo avere i livelli per ogni mese in un gruppo separato. Quindi inizieremo creando un gruppo di livelli e assegnandogli il nome del mese corrente. Usiamo qui la lista dei mesi che abbiamo definito in precedenza.


Passaggio 8

Successivamente creiamo un nuovo livello di testo all'interno del nostro gruppo e impostiamo il suo nome sul mese corrente. Questo sarà il nostro livello del nome del mese.

Ora dobbiamo impostare gli attributi del testo come il colore del testo, la dimensione del carattere e la giustificazione. Imposteremo il tipo del nostro testo su "PARAGRAPHTEXT" e forniremo al nostro livello le dimensioni preferite. L'attributo "contents" della variabile "monthName" rappresenta il testo effettivo che sarà visibile all'interno del layer, quindi vogliamo che questo sia il nome del mese corrente.

Infine ruoteremo lo strato di 90 ° in senso antiorario e posizioneremo il nostro livello. Qui useremo le nostre variabili offset "x" e "y".

Tieni presente che il posizionamento viene eseguito rispetto all'angolo in alto a sinistra dei livelli, ma da quando abbiamo ruotato di 90 ° in senso antiorario ora è diventato l'angolo in basso a sinistra. Se il tuo documento ha dimensioni diverse dalla mia, potresti aver bisogno di cambiare le costanti che ho usato per il posizionamento. I valori che ho usato sono elencati di seguito.


Passaggio 9

Quindi creeremo il livello testo che conterrà tutte le date del mese corrente, tranne la domenica. Lo aggiungeremo al gruppo creato in precedenza e imposteremo il suo nome, la giustificazione, il colore e la dimensione del carattere e posizionarlo. Aggiungeremo il contenuto di questo un po 'più tardi, spiegherò perché, quando arriveremo a quel punto.

Stessa cosa per il layer delle domeniche, ma questa volta imposteremo il colore su "highlightColor".


Passaggio 10

Ora, abbiamo bisogno di creare due variabili che manterranno il nostro testo mentre lo generiamo, "testo" conterrà i giorni della settimana e "textSun" le domeniche. Iniziamo aggiungendo le intestazioni e inserendo il trattino per il primo del mese. Creiamo una nuova data con la funzione javascript "Date ()" dell'anno del nostro calendario, il mese corrente e il primo di quel mese, e otteniamo la sua posizione nella settimana. Ricorda, la numerazione inizia sempre da 0, quindi ad esempio se il primo del mese è un lunedì, "n" sarà 0, se è un martedì, "n" sarà 1 e così via. Quindi dobbiamo aggiungere il rientro che abbiamo definito all'inizio alla nostra variabile "testo" tutte le volte che è necessario. Ad esempio, se il primo del mese è un mercoledì, aggiungeremo il rientro due volte.


Passaggio 11

OK. È tempo di generare tutti i numeri del mese. Per questo abbiamo bisogno di sapere quanti giorni ci sono nel nostro mese corrente e abbiamo bisogno dei numeri nel formato "zeri iniziali", quindi dobbiamo tornare indietro e definire due funzioni personalizzate: "daysInMonth" e "makeDay". Quindi si prega di scorrere fino alla cima del codice e aggiungere queste funzioni. Come ho detto, la funzione "daysInMonth" restituisce il numero di giorni nel mese in cui viene assegnato e "makeDay" restituisce il numero che gli viene assegnato in un formato specifico e aggiunge alcuni spazi bianchi, necessari per spaziatura dei giorni del mese. Ad esempio, se chiamiamo la funzione "daysInMonth" con l'anno = 2010 e il mese = 0 (gennaio) restituirà il numero 31. Se chiamiamo la funzione "makeDay" con d = 3, ad esempio, restituirà il testo "03", ma se d = 13 restituirà "13". Si noti che se "d" è minore di 10 aggiungerà uno zero prima di esso.

Stiamo per iniziare da d = 1 e incrementarlo fino a raggiungere il numero di giorni nel mese. Ora, se "i" ha il valore "6" significa che è una domenica, quindi dobbiamo aggiungerlo al livello Sunday. Ricordati di mettere un "\ r" qui per la nuova riga. Altrimenti, lo aggiungiamo ai giorni feriali. Qui aggiungiamo una nuova riga solo se il giorno corrente è "Sabato" ("i" è "5"). Alla fine, dobbiamo incrementare sia "i" che "d", e se il valore di "i" raggiunge "7", cioè se l'ultimo giorno aggiunto era una domenica, dobbiamo farlo di nuovo "0".

Infine, abbiamo tutte le date nelle nostre variabili di testo e possiamo aggiungerle ai nostri livelli. Il motivo per cui abbiamo ritardato questo passaggio è che ci vuole del tempo per Photoshop per aggiungere del testo a un livello, quindi è meglio aggiungerlo tutto in una volta, piuttosto che aggiungere ogni giorno separatamente.


Passaggio 12

Quindi, tutti i livelli del mese sono ora generati e tutto ciò che dobbiamo fare è creare il livello dell'anno e quella piccola riga in basso. Per il livello dell'anno è la stessa procedura che abbiamo usato in precedenza, creare un nuovo livello, dargli un nome, dimensioni e colore del testo e posizionarlo dove vogliamo.

Per la linea di fondo è un po 'diverso. Per prima cosa dobbiamo definire una regione con le coordinate X e Y per tutti e quattro gli angoli, quindi fare una selezione fuori da quella regione, riempirla con il nostro colore su un nuovo livello e infine deselezionarla.


Passaggio 13

Tutto il nostro codice è fatto! L'unica cosa da fare ora è gestirlo. Se si utilizza ExtendScript Toolkit, dal menu a discesa selezionare "Adobe Photoshop", se non si dispone di Photoshop aperto, fare clic sulla piccola icona a sinistra "Connetti all'applicazione di destinazione", quindi premere l'icona di riproduzione. Se hai utilizzato un editor di testo diverso, salva il file con le estensioni ".js" o ".jsx" ed eseguilo da Photoshop: File> Script> Sfoglia e quindi seleziona il file.


Conclusione

Abbiamo finito! Spero ti sia piaciuto lavorare su questo piccolo progetto. Gli script in Photoshop sono molto utili quando si devono fare azioni ripetitive e possono rendere il lavoro molto più semplice una volta capito. Non esitate a inviare eventuali suggerimenti che si possono avere, sono sempre i benvenuti!