Opprett en kalender ved hjelp av Scripting i Photoshop

Å lage en grafisk kalender for hånd er ikke en enkel oppgave. Derfor er det best å finne en måte å automatisere prosessen på. I dagens veiledning vil vi vise deg hvordan du genererer et helt år, tilpasset bakgrunnskalender ved hjelp av JavaScript. Hvis du er litt av en dataprogrammerer, er det bra, hvis ikke, ikke bekymre deg, det blir ganske greit.


Trinn 1

Ifølge Adobe er et skript en serie kommandoer som forteller at Photoshop skal utføre en eller flere oppgaver. Det første du må gjøre er å se på Adobes JavaScript-referanse. Du kan finne den her. Dette inneholder alle objektegenskaper og metoder Photoshop CS4 støtter, med eksempler, og det vil gi deg en ide om hva slags ting du kan gjøre med skripting i Photoshop. Hvis du bruker en eldre versjon, finner du referanser her.


Steg 2

Så la oss komme i gang. Hovedideen for prosjektet er å lage tekstlag for hver måned som inneholder datoene, så vi vil arbeide hovedsakelig med tekstmanipulering. Åpne ExtendScript Toolkit og opprett en ny JavaScript-fil (Command + N). Dette vil inneholde alle kommandoene vi skal gi Photoshop. Hvis du ikke vil bruke ExtendScript Toolkit, kan du bruke en hvilken som helst enkel tekstredigerer.


Trinn 3

Først må vi definere noen variabler for dokumentattributtene og kalenderfargeskjemaet. Jeg laget dokumentet mitt 1280x800 med 72 piksler / tommers oppløsning, kalt det "PhotoshopScriptCalendar" og valgte 2010 som kalenderåret vi skal lage.

Dette er det grunnleggende fargeskjemaet vi skal bruke. "NormalColor" er for hverdags- og månedsnavn. For søndager brukte jeg en annen farge for å få dem til å skille seg ut, dette er "highlightColor", og vi bruker "backColor" som standard kalenderbakgrunnsfarge hvis vi ikke velger et tilpasset bilde for det.


Trinn 4

Som jeg sa før, jobber vi hovedsakelig med tekstmanipulering, så vi må definere noen variabler for innrykk og tekst som vi skal bruke gjentatte ganger, som månedsoverskriftene.

For å sette en annen farge til søndagskolonnen må vi gjøre det til et annet tekstlag fra de andre dagene. Derfor har vi to overskrifter: "monthHeader" - mandag til lørdag, og "sundayHeader". Hver av disse to variablene slutter med to "\ r". Disse står for nye linjetegn, det samme som å trykke på Retur-tasten på tastaturet. Deretter definerer vi innrykkvariabelen. Legg merke til at første januar er en fredag, så for hver dag før må vi sette inn et inntrykk i stedet for tall. Antallet av hvite rom av disse variablene avhenger av hvilken skrift du bruker og størrelsen på den, så det vil trenge litt sti og feil før du får det riktig. Endelig lage en liste over alle månedens navn.


Trinn 5

Nå som vi har alt vi trenger, kan vi begynne å lage .psd-dokumentet.

Som du kan se, er koden ganske lesbar. I vår Photoshop-applikasjon legger vi til et nytt dokument med den angitte bredden, høyden, oppløsningen og navnet vi definerte tidligere, en fargemodus, og behold referansen i en ny variabel "doc". Som standard er alle nye dokumenter i RGB, så vi kunne ha utelatt denne parameteren, men hvis du vil ha CMYK for eksempel, kan du bruke "NewDocumentMode.CMYK". Det samme med LAB, GRAYSCALE og BITMAP. Du finner alle disse i referansene som er koblet over.

Deretter lager vi et nytt utvalg, og velg hele dokumentet, fyll det med bakgrunnsfargen, og til slutt avmarker den.


Trinn 6

Deretter må vi legge til en egendefinert bakgrunn fra et eksisterende bilde. Gradientbakgrunnen fra det endelige resultatet som er oppført ovenfor, er faktisk et eget bilde.

For dette skal vi bruke funksjonen openDialog (). Dette åpner dialogen fra "File> Open" og setter i listen "utvalgte filer" listen over valgte bilder. Vi skal bare bruke det første valgte bildet som er i "fil" -arrayet på posisjon 0. Så først må vi sjekke om et bilde ble valgt.

Deretter skal vi laste det valgte bildet i vår søknad og få en referanse til det ved å ringe "app.activeDocument" som returnerer det nåværende aktive dokumentet i Photoshop.

Endre størrelse på bildet til vår foretrukne bredde og høyde. Igjen lager vi et nytt utvalg av hele dokumentet, kopierer dette valget og lukker dokumentet med muligheten til ikke å lagre endringene.

Til slutt, lim inn valget i vårt kalenderdokument. Dette legger bildet som det første laget over bakgrunnslaget. Så navnet det noe som "BackgroundImage".

Legg merke til at hvis ingen bilde ble valgt fra dialogboksen, hadde ingen av disse kommandoene blitt gjort.


Trinn 7

OK. Nå kommer den faktiske generasjonen av kalenderen. Dette kan være litt vanskeligere, men vi tar det trinnvis, og forhåpentligvis vil det ikke være så vanskelig å forstå.

Vi må gjøre et sett med handlinger for hver måned i året. For dette bruker vi en "for" loop. I utgangspunktet tar dette variabelen "curr", som vi bruker til å betegne den nåværende måneden vi jobber med, setter sin startverdi til 0, og gjør gjengivelsen av gjentatte ganger flere ganger og øker verdien av "curr" hver gang til dette blir 12. Således går gjennom alle tolv måneder.

Først må vi definere to variabler vi skal bruke til å plassere våre måneder i dokumentet som et rutenett. Disse representerer X og Y offsets av hver måned. Vi skal legge 4 måneder på en enkelt rad, så for X-offsettet skal vi bruke "%" -operasjonen. Dette returnerer resten av delingen av "curr" til 4. Denne kompensasjonen skal være den samme for januar, mai, september, februar, juni, oktober og så videre, for hver måned i samme kolonne. For Y-forskyvningen bruker vi "JVascript-funksjonen" Math.floor () "som returnerer den største verdien, mindre enn divisjonen resultatet av" curr "til 4. I måneder fra samme rad er Y-offset det samme.

Til slutt vil vi ha lagene for hver måned i en egen gruppe. Så vi skal begynne med å lage en laggruppe og gi den navnet på den aktuelle måneden. Vi bruker her listen over måneder vi definerte tidligere.


Trinn 8

Deretter lager vi et nytt tekstlag i vår gruppe og angir navnet til den aktuelle måneden. Dette kommer til å være vår måneds navn lag.

Nå må vi sette tekstattributtene som tekstfarge, skriftstørrelse og begrunnelse. Vi skal sette typen av teksten til "PARAGRAPHTEXT" og gi laget vårt de foretrukne dimensjonene. Egenskapen "innhold" av "monthName" -variabelen står for den faktiske teksten som vil være synlig inne i laget, så vi vil at dette skal være navnet på den nåværende måneden.

Til slutt skal vi rotere laget 90 ° mot urviseren og plassere laget vårt. Her skal vi bruke våre offsetvariabler "x" og "y".

Vær oppmerksom på at posisjoneringen er gjort i forhold til lagets øverste venstre hjørne, men siden vi har rotert den 90 ° CCW, har den nå blitt nederst til venstre. Hvis dokumentet ditt har forskjellige dimensjoner fra min, må du kanskje endre konstantene jeg brukte til posisjonering. Verdiene jeg brukte er oppført nedenfor.


Trinn 9

Deretter skal vi lage tekstlaget som vil inneholde alle datoene i den nåværende måneden, unntatt søndager. Vi skal legge til den i gruppen vi opprettet tidligere, og angi navnet, begrunnelsen, fontens farge og størrelse og plassere den. Vi skal legge til innholdet her litt senere, jeg skal forklare hvorfor, når vi kommer til det punktet.

Samme ting for søndagslaget, men denne gangen kommer vi til å sette fargen til "highlightColor".


Trinn 10

Nå må vi lage to variabler som vil holde teksten vår når vi genererer den, "tekst" vil inneholde hverdager og "textSun" på søndager. Vi begynner med å legge til overskriftene og sette innrykket for den første i måneden. Vi lager en ny dato med javascript "Date ()" -funksjonen fra året i vår kalender, den aktuelle måneden og den første i den måneden, og få sin posisjon i uken. Husk at nummereringen alltid starter fra 0, så for eksempel hvis den første i måneden er en mandag, vil "n" være 0, hvis det er en tirsdag, vil "n" være 1 og så videre. Da må vi legge til innrykket vi definerte i begynnelsen til vår "tekst" -variabel så mange ganger som nødvendig. Hvis den første av måneden er en onsdag for eksempel, legger vi innrykket to ganger.


Trinn 11

OK. Det er på tide å generere alle tallene for måneden. For dette trenger vi å vite hvor mange dager det er i vår nåværende måned, og vi trenger tallene i "ledende nuller" -format, så vi må gå tilbake og definere to tilpassede funksjoner: "daysInMonth" og "makeDay". Så vennligst bla opp til toppen av koden din og legg til disse funksjonene. Som jeg sa funksjonen "daysInMonth" returnerer antall dager i måneden vi gir den, og "makeDay" returnerer nummeret vi gir det i et bestemt format, og legger til noe hvittomrom som er nødvendig for å avbryte dagene i måneden. Så, for eksempel hvis vi kaller funksjonen "daysInMonth" med året = 2010 og måneden = 0 (januar), vil den returnere nummer 31. Hvis vi kaller "makeDay" -funksjonen med d = 3 for eksempel, kommer den tilbake teksten "03", men hvis d = 13 vil den returnere "13". Legg merke til at hvis "d" er mindre enn 10, vil det legge til et null før det.

Vi skal starte fra d = 1 og øke det til det når antall dager i måneden. Nå, hvis "jeg" har verdien "6" betyr det at det er en søndag, så vi må legge den til søndagslaget. Husk å sette en "\ r" her for ny linje. Ellers legger vi til det på hverdager. Her legger vi bare til en ny linje hvis dagens dag er "Lørdag" ("jeg" er "5"). På slutten må vi øke både "i" og "d", og hvis verdien av "jeg" når "7", det vil si hvis den siste dagen ble lagt til en søndag, må vi gjøre det "0" igjen.

Endelig har vi alle datoene i våre tekstvariabler, og vi kan legge dem til lagene våre. Årsaken til at vi har forsinket dette trinnet er at det tar litt tid for Photoshop å legge til tekst i et lag, så det er bedre å legge alt på en gang, i stedet for å legge til hver dag hver for seg.


Trinn 12

Så alle månedslagene er nå generert, og alt vi trenger å gjøre er å lage årslaget, og den lille linjen nederst. For årslaget er det samme prosedyre som vi brukte før, lag et nytt lag, gi det et navn, tekststørrelse og farge, og plasser det der vi vil.

For bunnlinjen er det litt annerledes. Først må vi definere en region med X- og Y-koordinater for alle fire hjørner, og deretter velge et utvalg av den regionen, fyll den med fargen på et nytt lag og til slutt avmarkere det.


Trinn 13

All vår kode er ferdig! Det eneste du må gjøre nå er å kjøre det. Hvis du bruker ExtendScript Toolkit, velger du "Adobe Photoshop" fra rullegardinmenyen. Hvis du ikke har Photoshop åpnet, klikk på det lille ikonet til venstre "Koble til målprogram", og trykk deretter på spillikonet. Hvis du har brukt en annen tekstredigerer, lagre filen med ".js" eller ".jsx" -utvidelsene, og kjør den fra Photoshop: File> Scripts> Bla gjennom og velg filen din.


Konklusjon

Vi er ferdige! Håper du har hatt glede av å jobbe med dette lille prosjektet. Skript i Photoshop er svært nyttige når du trenger å gjøre repeterende handlinger, og kan gjøre jobben din mye enklere når du får tak i dem. Ikke nøl med å sende noen forslag du måtte ha, de er alltid velkommen!