Kraftig Task Automatisering med Photoshop Scripting

Powerful Task Automatisering med Photoshop Scripting

Handlinger er svært populære. De er enkle å bruke og kan spare deg for mye tid, men på slutten av dagen, de er ikke veldig kraftig og har svært lav allsidighet. Det er der Photoshop scripting funksjoner gå til handling. Vi kommer til å vise deg de nesten uendelige mulighetene som Photoshop scripting tilbud.




Handlinger vs Scripts

En handling er bare en måte å samle inn en rekke trinn slik at vi kan spille dem igjen og igjen. Hvis du ønsker å være i stand til raskt å trekke en 50x50px rød firkant ved å trykke på en knapp, bare ta deg selv gjør det en gang, og deretter spille handlingen når du trenger det. Du er ferdig. Men, hva om noen ganger trenger du en 50 piksler rød firkant og andre ganger trenger du en 100px blå? Vel, du må ta en annen handling for det andre tallet. Handlinger tilbyr svært lav allsidighet, fordi de registrerte trinnene er statisk -. Sin atferd endrer ikke avhengig av ytre variabler

Photoshop scripting lar deg legge til betinget logikk
, slik at skriptet automatisk gjør beslutninger basert på dagens situasjon eller brukerundersøkelser. For eksempel, i forrige eksempel, kan en Photoshop script ber brukeren om plassen bredde og farge,
og deretter gjøre det ordentlig. Videre skript tilbyr mange flere fordeler fremfor handlinger, for eksempel avansert filhåndtering, støtte for flere program, osv



Grunnleggende Photoshop Scripting

En Photoshop script er en tekstfil med kode som forteller at programmet skal gjøre visse oppgaver. Disse skriptene kan skrives på tre forskjellige skriptspråk. Hvis du kjører Mac OS, kan du bruke Applescript og Javascript. I Windows kan du bruke VBScript og Javascript også. Gitt Javascript støttes fullt på begge plattformer, det er det beste valget for å sikre vår script når et størst publikum, så vi kommer til å fokusere på det i denne artikkelen. Dessuten er Java den mest populære klient-side skriptspråk, så sjansene er du har hørt om det tidligere.

Photoshop skriptmotoren gir oss måter å manipulere de ulike elementene i programmet, for eksempel lag, guider, kanaler, dokumenter, etc. Nesten hver eneste element i Photoshop kan undersøkes og endres fra et manus. Disse er reflektert i Photoshop Document Object Model. I denne artikkelen skal vi jobbe med noen grunnleggende elementer, men det er mye, kan du se dem alle i dokumentasjonen offisielle Photoshop Scripting.

Kommer med Photoshop er det et program som heter Adobe Extend Toolkit CS5. Det er et integrert utviklingsmiljø for skripting, ikke bare for Photoshop, men for noen av Creative Suite-medlem. Å holde ting enkelt, vi skal bruke en vanlig tekst editor som Notisblokk, men for store scripts Adobe Extend Toolkit tilbyr en rekke verktøy, som koden auto-fullføring, integrert hjelp og en debugger.

Så uten videre, la oss gå til dine Presets /Scripts mappe i Photoshop katalog, opprette en tom tekstfil kalt firstScript.jsx og åpne den med din favoritt teksteditor.



Hva skjer i App forblir i App

Når vi har å gjøre med Photoshop skript, starter alt med "app" objekt. Det representerer programmet, og det inneholder alle de andre objektene i et hierarkisk måte. I dette første trinnet skal vi se på noen grunnleggende egenskapene til "app" objekt.

Leder til tekst editor og skrive følgende i firstScript.jsx
alert ("Du bruker Photoshop-versjon "+ app.version);

Så fyre Photoshop og gå til Fil > Scripts > firstScript. Du vil se en varselboks som sier at "du bruker Photoshop versjon 12.0.0" (eller hvilken versjon du bruker). Den "varsling" -funksjonen viser en melding, en streng med tekst og den versjonen av programmet, kan du lese fra "versjon" egenskap av "app" objekt. I Javascript, kan du få tilgang til egenskapene og barn av et objekt ved hjelp av "." operatør, som i "app.version".

I Photoshop, er den grunnleggende arbeidsmiljø dokumentet. Den "app" objekt inneholder en samling kalt "dokumenter", som åpenbart representerer sett av åpne dokumenter i Photoshop. La oss gå tilbake til redaktøren, erstatte innholdet i firstScript.jsx med følgende:
if (app.documents.length > 0) {alert ("Det er" + app.documents.length + "åpne dokumenter" );} else {alert ("Det er ingen åpne dokumenter");}

Hvis du starter script (Fil > Scripts > firstScript), vil varselmeldingen endres avhengig av antall som er åpne dokumenter. Koden er meget enkel, den første linje kontrollerer om antall åpne dokumenter (det vil si lengden av settet av dokumenter i programmet) er større enn null, og viser en melding med dette nummeret. Ellers viser det en melding som sier det ikke er noen åpne dokumenter. Enkelt, er det ikke? Men så langt dette ser ikke så nyttig.



Veil arbeidet

La oss prøve med en mer nyttig eksempel. For eksempel si at du ønsker å dele dokumentet i like store kolonner. Gjøre det manuelt skulle tilsi måle dokumentbredden, dele det på antall kolonner og deretter forsiktig plassere førerne. Hva om du trenger tolv kolonner? Det ville være totalt bortkastet tid. La oss se et stykke kode som gjør den jobben:
if (app.documents.length > 0) {var numberColumns = parseInt (ledetekst ("Hvor mange kolonner trenger du?", 5)); Var doc = app.activeDocument; Var documentWidth = doc.width; Var columnWidth = documentWidth /numberColumns; for (i = 0; I < = numberColumns, ++ i) {doc.guides.add (Direction.VERTICAL, i * columnWidth); }}

Ikke vær redd! Koden er svært enkelt. Du vet allerede hva den første linjen betyr: "hvis det er minst ett åpent dokument, gjør du følgende". Den neste linjen bruker "rask" -funksjonen til å spørre brukeren om antall kolonner, og går resultatet til "parseInt" -funksjonen, som enkelt konverterer det til et heltall. Resultatet lagres i "numberColumns" variable. Bare i tilfelle du ikke vet det, er variabler som brukes i programmeringsspråk for å lagre verdier, så hvis du ønsker å spare en viss verdi, bruker du en variabel.

Den tredje linjen skaper en ny variabel, kalt "doc", som representerer det aktive dokumentet. Den fjerde linjen leser bredden av det aktuelle dokumentet og lagrer den i "documentWidth" variable. Den femte linje beregner bredden på hver kolonne ved å dele den totale bredden av det antall kolonner. Til slutt begynner den sjette linje en løkke som gjentas en gang per kolonne (pluss en gang til for den siste guide). I hver iterasjon, variabelen "i" vil holde gjeldende kolonne nummer. 0, 1, 2, 3 ... Den septh linjen vil legge til en vertikal guide til gjeldende dokument som er lagt inn på riktig posisjon

For å prøve koden, det er det samme som før. Erstatte innholdet av vår firstScript fil med koden og deretter gå til Fil > Scripts > firstScript.



Endre hele teksten din på samme tid

Så du har opprettet en stor web design, bruker alltid vakker Helvetica, men ser ut som klienten ikke har det installert, foretrekker han Arial. Også han ønsker å sikre at alle vet opphavsretten til materialet, slik at han insisterer på å legge en opphavsrett i hver tekst element. "Ikke noe problem, jeg vet Photoshop Scripting!", Svarer du. La oss se hvordan du gjør det: (! App.documents.length = 0)
hvis {var doc = app.activeDocument; for (i = 0; i < doc.artLayers.length; ++ i) {var lag = doc.artLayers [i]; if (layer.kind == LayerKind.TEXT) {layer.textItem.font = "ArialMT"; layer.textItem.contents + = "© 2011 Envato"; }}}

De to første linjene er allerede kjent. Deretter er det et nytt element her, laget samlingen. I Photoshop scripting, er det to typer lag, på den ene siden har vi de "Layer Sets", som er essensielt grupper, og på den andre siden har vi de "Kunst Lag", som omfatter alle de andre slags lag: normale lag, tekst lag, justeringslag, etc. Våre dokumentobjekt ("app.activeDocument") har en egenskap kalt "artLayers", for å få tilgang bare kunst lag, en annen egenskap kalt "layerSets" for å få tilgang til de laget sett, og deretter en egenskap kalt bare "lag", som inkluderer både tidligere sett.

I vår kode er vi krysser sett kunst lag av vår dokument. I hver iterasjon, lagrer vi vår nåværende lag i variabelen "lag", så sjekker vi om den type av laget er "LayerKind. TEKST", som representerer et tekstlag. I så fall kan vi få tilgang til textItem tilhører våre lag, som inneholder alle egenskapene til teksten, og endre sin "font" attributt til "ArialMT" (vi trenger å bruke Postscript navnet på skriften). Dessuten legger vi informasjon om opphavsrett til innholdet i laget ved hjelp av "+ =" operatør på "innholdet" eiendom.



La det bli Squares

Vi har forlot den vanskeligste for slutten. Eksempelet vi foreslo helt i begynnelsen av artikkelen besto av å ha en måte å automatisk lage firkanter, bare å velge størrelse og farge. Vel, det er ganske enkel oppgave for et skript
if (app.documents.length > 0). {Var doc = app.activeDocument; Var squareSize = parseInt (ledetekst ("Velg størrelsen på torget", 50)); Var squareColor = new RGBColor; squareColor.hexValue = prompt ("Velg farge på torget (heksadesimal)", "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 ();}

Dette er den lengste koden vi har sett så langt, men det er ikke vanskelig å forstå. I den tredje linjen, ber vi brukeren om størrelsen på torget og lagre den i "squareSize" variable. Deretter oppretter vi en ny RGBColor å angi fargen på torget, og vi leser den heksadesimale verdien fra brukerundersøkelser.

Det neste trinnet er å opprette et lag. Vi får tilgang til "artLayers" set fra det aktive dokumentet, og bruke sin "legge" metode for å legge et nytt lag, lagring en referanse til det i variabelen "newLayer". Neste, vi skifter navn acordingly.

Det siste trinnet er å foreta et valg. Vi skaper en rekke arrays angir koordinatene til hvert hjørne av utvalget. Da passerer vi som region til "velge" metoden i "valg" objekt av det aktive dokumentet.

Til slutt fyller vi valget med tidligere definert farge, og fjerner markeringen for alle. Vår torget skaperen er ferdig!



Konklusjon

Scripts har vist seg å være langt mer kraftig og konfigurerbar enn handlinger. De er sikkert litt vanskeligere å lage, men resultatene er verdt innsatsen. Det er også en stadig stor og støtte samfunnet, og det har også blitt opprettet komplett Javascript-biblioteker for Photoshop scripting, som XTools, som er åpen kildekode. Disse bibliotekene prøve å oppfylle noen hull som ellers ville kreve lavere nivå løsninger.

Også gitt den økende populariteten til tiltakspakker for lite penger, tror jeg det kan være et voksende marked for skript pakker, spesielt
for komplekse layout oppgaver og sånt. Jeg håper at med denne artikkelen, har du lært det grunnleggende Photoshop scripting - ha det gøy å skrive dine egne skript

PS: nå kan det være en god mulighet til å ta en titt på Javascript NetTuts fra Null video! Serien, som vil gi deg en god forståelse av Javascript grunnleggende fra start til slutt. Anmeldelser