Innhold:

1. Bruk av Script-Fu konsollet, Kom i gang - et eksempel
2. Litt om programmering: Hvordan legge prosedyrer inn i et script
3. Gjennomgang: Prosedyrene fra del 1 settes inn i et script
4. Skript med brukervalg
5. Om feilmeldinger og Skript editorer
6. Et praktisk eksempel


Innføring i Script-Fu - del 1


   

Bruk av Script-Fu konsollet

Dersom du ofte bruker samme fremgangsmåte når du lager grafikk i Gimp eller fikser på fotografier, og fremgangsmåten er en tidkrevende prosess som innebærer bruk av mange funksjoner, kan det være greit å automatisere denne prosessen.

Med skriptspråket «Script-Fu» kan du skrive dine egne skript til Gimp, slik at du kan bruke kompliserte effekter i bildene dine uten å måtte huske fremgangsmåten hver gang.

Skript-prosedyrene er innebygde kommandoer i Gimp, som du bruker når du skriver skript. Disse kommandoene er de samme som du bruker til vanlig når du arbeider med bildene dine (velge et verktøy i verktøykassen, opprette et nytt lag, endre forgrunnsfargen etc.).
Skript-prosedyre finnes i en egen liste i «Script-Fu Procedure Browser»-vinduet, og kalles prosedyre databasen.
Gimp har et innebygd skript-konsoll (Script-Fu konsoll) hvor du kan se virkningen av skript-prosedyrene direkte i bildet.


Kom i gang – et eksempel

For å komme i gang skal vi se på et enkelt eksempel på hvordan en lager en oval logo med et navn på, ved å skrive prosedyrer i Script-Fu konsollet.

En god arbeidsmetode er å først gå igjennom arbeidsprosessen steg-for-steg på vanlig måte, slik at du har det klart for deg hva som skal gjøres.
Det er mange skript-prosedyrer i Gimp, og derfor er det alltid bra å sette opp en liste over hvilke trinn som skal utføres i arbeidsprosessen. På denne måten blir lettere å finne den rette skript-prosedyren som må brukes til hvert steg i prosessen:

1. Opprette et nytt bilde

2. Opprette et nytt lag med alfakanal

3. Fylle laget med et mønster

4. Opprette et elliptisk utvalg i laget

5. Invertere utvalget, og klippe ut innholdet

6. Tilføre den ovale grafikken 3d-kant ved hjelp av «Bump-map»-filteret

7. Legge til et tekstlag oppå den ovale grafikken (teksten skal ha en rødfiolett farge)

8. Endre tekstlagets lag-modus til «Mørkne»


Åpne « Script-Fu konsoll» («Filter > Script-Fu > Script-Fu konsoll» i bildevinduets meny):

Dette er det interaktive skript-konsollet. Når du skriver inn en prosedyre (eller skript-kommando) i tekstboksen nederst i vinduet, og trykker «Enter»-tasten på tastaturet, sendes kommandoen til konsollet og utføres på bildet du har oppgitt som mål-bilde i prosedyren. Klikk på «Browse...»-knappen for å åpne listen med prosedyrene.

Listen med prosedyrene ligger i «Script-Fu Procedure Browser»-vinduet:

Til venstre i vinduet er listen med alle tilgjengelige prosedyrer, og til høyre vises informasjon om den valgte prosedyren. Øverst i informasjons-delen av vinduet vises navnet på prosedyren, og en kort beskrivelse av hvordan den fungerer. Under prosedyre-navnet vises listen med prosedyrens parametre. Parametre er ulike egenskaper ved prosedyren som du selv bestemmer.
Nederst i «Script-Fu Procedure Browser»-vinduet, i avsnittet «Tilleggsinformasjon» , er en beskrivelse av hva prosedyren gjør med bildet, og hvordan den fungerer. Mange prosedyrer presenterer også resultatet av hva den har gjort i bildet i form av en returverdi.
I «Søk»-feltet kan du lete etter prosedyrer ved å søke på både navn, type og beskrivelse.

 


Det første som må gjøres er å opprette et nytt bildevindu:
Velg prosedyren «gimp-image-new». Denne prosedyren oppretter et nytt bildevindu.
Markér prosedyren i listen, og klikk på «Bruk»-knappen nede i «Script-Fu Procedure Browser»-vinduet.
Dette sender prosedyren til konsoll-vinduets innputt-tekstboks:
(gimp-image-new width height type)
Bestem det nye bildets bredde ved å endre «width»-parametret til «300», og sett bildets høyde til 400 piksler ved å endre «height»-parametret til «400». Det siste parametret, «type», bestemmer hvilket farge-modus bildet skal ha. Det nye bildet som skal opprettes, skal være et bilde i vanlig RGB-modus. Her kan du enten endre «type» til «RGB», eller du kan også bruke tall-verdien «0».

Som du ser i parameter-listen, kan du også velge å bruke tall-verdier i dette parametret:

Parameter-beskrivelsen består av 3 elementer:
Element 1 viser benevnelsen som brukes av parameteret, slik at du kan se hvilken egenskap parameteret endrer.
Element 2 viser hvilken skrivemåte som er gyldig å bruke, når du skal gi parameteret en verdi.
Dette kalles også for "datatype".
INT32 betyr at parameterets datatype er et heltall uten desimaler (f.eks. 3 eller 65).
IMAGE betyr at parameterets datatype er bildets returverdi.
LAYER betyr at parameterets datatype er lagets returverdi.
STRING betyr at parameterets datatype er en tekst mellom to gåseøyne ("Dette er en tekststreng_4").
      Inni tekststrengen kan du bruke alle typer tegn; både tall, bokstaver, spesialtegn mm.
FLOAT betyr at parameterets datatype er et tall som kan bestå av desimaler (f.eks. 16,2).
DRAWABLE betyr at parameterets datatype er lagets returverdi.
COLOR betyr at parameterets datatype er en farge oppgitt som en Script-Fu liste med tallverdier:
     '(255 255 255)
      Listen over gjengir fargen 'hvit' vha. RGB-fargeverdiene.
Element 3 er en beskrivelse av parameterets egenskap, og forteller ev. også hvilke verdier som er lovlig å bruke.
Legg merke til at det ofte er oppgitt at det er lov å bruke beskrivende ord som parameter-verdi når parameterets datatype er
INT32 (heltall). Det er f.eks. lov å skrive RGB istedet for å bruke tallverdien 0.
Script-Fu tillater dette, slik at skriptet blir mer lesevennlig.



Gi prosedyren følgende parametre:
(gimp-image-new 300 400 RGB)







og trykk «Enter»-tasten for å sende prosedyren til konsollet.

Det nye bildevinduet vil ikke bli vist før Gimp får beskjed om å vise det. Vis bildevinduet ved å laste inn prosedyren «(gimp-display-new)» i innputt-tekstboksen. Denne prosedyren har bare ett parameter: «image», altså hvilket bilde som skal vises:
(gimp-display-new image)
Bruk returverdien fra «gimp-image-new»-prosedyren for å fortelle Gimp hvilket bilde som skal vises. Denne returverdien (27) ble skrevet ut av konsollet da «gimp-image-new»-prosedyren ble lastet inn:



Denne returverdien er det nye bildets ID. Bruk denne ID'en til å fortelle Gimp at det er dette bildet som skal vises, ved å endre parameteret «image» til «27»:
(gimp-display-new 27)
Gimp vil nå åpne et nytt bildevindu.



Prosedyren legges inn i konsollets tekstboks, og blir gitt riktig parameter.



Prosedyren sendes til konsollet, og gir returverdi.




Slik ser bildet ut etter at prosedyren er sendt til konsollet.

Vær oppmerksom på at du vil få andre returverdier enn de verdiene som er brukt i eksemplet her! Dette kommer av at verdier som genereres av konsoll-vinduet er tilfeldige, basert på hvor mange bildevinduer du har åpnet fra før av under arbeidsøkten. Men bruken av disse verdiene foregår på samme måte.


 


Bildet har ikke fått noe lag ennå, og dette opprettes ved å laste prosedyren «(gimp-layer-new)»:
(gimp-layer-new image width height type name opacity mode)

Denne prosedyren har 7 parametre:
«image»: I hvilket bilde laget skal legges til
«width»: bredden på laget
«height»: høyden på laget
«type»: farge-moduset til laget (RGB uten alfakanal, RGBA med alfakanal, Gråskala, Indeksert etc.)
«name»: hvilket navn laget skal ha i lag-listen
«opacity»: lagets dekkevne/evne til å være ugjennomsiktig (0 - 100%)
«mode»: hvilket lag-modus det skal ha (Normal, Differanse, Glød etc.)

Gi prosedyren disse parametrene:
(gimp-layer-new 27 300 400 RGBA-IMAGE "Lag1" 100 NORMAL-MODE)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.



Prosedyren sendes til konsollet, og gir returverdi.



Når laget er opprettet må det legges til bildet ved hjelp av prosedyren «(gimp-image-add-layer)»:
(gimp-image-add-layer image layer position)





Denne prosedyren har 3 parametre:
«image»: hvilket bilde laget skal vises i
«layer»: lagets ID (hvilket lag som skal legges til)
«position»: hvilken plassering laget skal ha i lag-listen (standardvalg er -1, som betyr at det legges øverst i lag-listen).

Bruk returverdien fra «gimp-layer-new»-prosedyren som ble sendt fra konsollet (100), og gi prosedyren følgende parametre:
(gimp-image-add-layer 27 100 -1)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.




Prosedyren sendes til konsollet, og gir returverdi.
Returverdien (#t) betyr "sant/riktig".






Slik ser bildet ut etter at prosedyren er sendt til konsollet.

Her legges det nye laget (100) til bildet (27) øverst i lag-listen (-1).
Det nye laget er nå lagt til i bildet (se informasjonen i vinduspynten!).

Fargen på det nye laget kan se noe merkelig ut, eller være helt gjennomsiktig. Dette kommer av at laget ennå ikke er fyllt med en farge eller et mønster.



 

 

Fyll det nye laget med det aktive mønsteret ved å laste prosedyren «(gimp-drawable-fill)»:
(gimp-drawable-fill drawable fill-type)




Denne prosedyren har 2 parametre:
«drawable»: laget som skal fylles (betegnelsen «drawable» brukes også om lag)
«fill-type»: type med fyll (mønster, forgrunnsfarge, bakgrunnsfarge, gjennomsiktig, hvit farge, og ingen fyll)

Bruk returverdien fra «gimp-layer-new»-prosedyren som ble sendt fra konsollet (100), og gi prosedyren følgende parametre:
(gimp-drawable-fill 100 PATTERN-FILL)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.




Prosedyren sendes til konsollet, og gir returverdi.





Slik ser bildet ut etter at prosedyren er sendt til konsollet.


Laget fylles nå med det aktive mønsteret.





 

 

 

Nå som du har opprettet et bilde med et lag, kan det opprettes et elliptisk utvalg i bildet ved hjelp av prosedyren «(gimp-ellipse-select)»:
(gimp-ellipse-select image x y width height operation antialias feather feather-radius)




Denne prosedyren har 9 parametre:
«image»: bildet som utvalget skal opprettes i
«x»: x-koordinaten til det øvre venstre hjørnet til utvalgets markeringsboks *)
«y»: y-koordinaten til det øvre venstre hjørnet til utvalgets markeringsboks *)
«width»: utvalgets bredde målt i antall piksler
«height»: utvalgets høyde målt i antall piksler
«operation»: ellipse-utvalgets modus (erstatt, legg til, trekk fra, eller overlapp)
«antialias»: bestemmer om utvalget skal ha jevne kanter
«feather»: bestemmer om utvalget skal ha myke kanter
«feather-radius»: bestemmer radiusen til den myke kanten

*)
«x»-verdien er antall piksler målt fra venstre bildekant, og «y»-verdien er antall piksler målt fra bildets øverste kant. Dette punktet (x,y) angir det øverste venstre hjørnet til utvalgets markeringsboks:


Når du fører musepekeren over et bilde, vil x og y koordinatene til musepekerens spiss vises nede i venstre hjørne i bildevinduet til Gimp.



Bruk returverdien fra «gimp-image-new»-prosedyren (27) for å angi hvilket bilde utvalget skal opprettes i, og gi prosedyren følgende parametre:
(gimp-ellipse-select 27 28 88 230 180 CHANNEL-OP-ADD TRUE FALSE 0)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.





Prosedyren sendes til konsollet, og gir returverdi.





Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Det er nå opprettet en aktiv elliptisk markering i bildet.

 

 

Området rundt markeringen skal klippes bort, slik at det kun vises en oval ellipse fyllt med mønsteret. For å fjerne området utenfor den aktive markeringen må utvalget inverteres:
Inverter utvalget ved hjelp av prosedyren «(gimp-selection-invert)»:
(gimp-selection-invert image)



Denne prosedyren har bare en parameter:
«image»: bildet som inneholder det aktive utvalget
Bruk returverdien fra «gimp-image-new»-prosedyren (27) for å angi hvilket bilde som inneholder det aktive utvalget:
(gimp-selection-invert 27)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.





Prosedyren sendes til konsollet, og gir returverdi.



Området utenfor det elliptiske utvalget er nå markert som et aktivt utvalg.

Slett innholdet i den aktive markeringen ved hjelp av prosedyren «(gimp-edit-clear)»:
(gimp-edit-clear drawable)



Denne prosedyren har bare en parameter:
«drawable»: laget som det skal fjernes piksler fra

Bruk returverdien fra «gimp-layer-new»-prosedyren som ble sendt fra konsollet (100), og gi prosedyren følgende parametre:
(gimp-edit-clear 100)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.





Prosedyren sendes til konsollet, og gir returverdi.






Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Området utenfor det elliptiske utvalget er nå fjernet. Fordi laget tidligere ble opprettet med alfakanal (RGBA), blir det bortklipte området usynlig, slik at en senere kan legge til 3d-kant på den ovale grafikken. Dersom laget ikke hadde blitt opprettet med alfakanal, ville området fått bakgrunnsfarge.

Deaktiver det aktive utvalget ved hjelp av prosedyren «(gimp-selection-none)»:
(gimp-selection-none image)



Bruk returverdien fra «gimp-image-new»-prosedyren (27) for å angi hvilket bilde som inneholder det aktive utvalget:
(gimp-selection-none 27)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.





Prosedyren sendes til konsollet, og gir returverdi.






Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Det elliptiske utvalget er nå ikke lenger aktivt.



 

 

Gi den ovale grafikken 3d-kant ved hjelp av en prosedyre som tar i bruk BumpMap-filteret: «(plug-in-bump-map)»:
(plug-in-bump-map run-mode image drawable bumpmap azimuth elevation depth xofs yofs waterlevel ambient compensate invert type)



Denne prosedyren har 14 parametre:
«run-mode»: bestemmer om «BumpMap»-vinduet skal åpnes eller ikke. Verdien «1» (none-interactive) åpner ikke vinduet, og «0» (Interactive) åpner vinduet.
«image»: bildet som filteret skal brukes i
«drawable»: laget som skal få 3d-effekten
«bumpmap»: laget som skal brukes som høydekart
«azimuth»: lengdegraden/ (retningen) som lyset kommer fra
«elevation»: breddegraden/høyden på lyset
«depth»: dybden i 3d-virkningen
«xofs»: vannrett forskyvning av høydekartet (negative verdier flytter kartet til høyre, og positive til venstre)
«yofs»: loddrett forskyvning av høydekartet (negative verdier flytter kartet nedover, og positive oppover)
«waterlevel»: minsker 3d-effekten i gjennomsiktige områder i bildet. Økning av verdi gir større virkning
«ambient»: øker lysstyrken i bildet og reduserer 3d-effekten. Økning av verdi gir større virkning
«compensate»: motvirke formørkning. Verdien «1» (true) aktiverer dette valget, og «0» (false) deaktiverer valget
«invert»: inverterer 3d-effekten. Verdien «1» (true) aktiverer dette valget, og «0» (false) deaktiverer valget
«type»: angir hvilken metode som skal brukes for å koble sammen de to lagene (lineær, sfærisk, sinus)

Legg merke til at de fleste parametrene angir verdier for de samme innstillingene som finnes i det grafiske brukergrensesnittet til BumpMap-filteret.



Det grafiske brukergrensesnittet til "Bump Map"-tilleggsprogrammet.
(Klikk på «Hjelp»-knappen i «BumpMap»-vinduet for å lese mer om innstillingene til BumpMap-filteret).



Bruk returverdien fra «gimp-image-new»-prosedyren (27) for å angi hvilket bilde som filteret skal brukes i, og bruk returverdien fra «gimp-layer-new»-prosedyren for å angi hvilke lag som skal brukes (100):
(plug-in-bump-map 1 27 100 100 135 45 7 0 0 0 0 1 0 LINEAR)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.






Prosedyren sendes til konsollet, og gir returverdi.






Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Legg merke til laget bruker seg selv som høydekart, og at standardvalgene (bortsett fra dybden) til BumpMap-filteret brukes.
Den ovale grafikken har nå fått 3d-kant.



 

 

Det skal nå legges til tekst i bildet, men først må forgrunnsfargen endres, slik at teksten får ønsket farge når den opprettes.
Endre forgrunnsfargen ved hjelp av «(gimp-context-set-foreground)»:
(gimp-context-set-foreground foreground)



Denne prosedyren har bare en parameter:
«foreground»: bestemmer forgrunnsfarge oppgitt som RGB-farge i en script-fu liste

Hent ønsket farge i «Endre forgrunnsfarge»-vinduet til Gimp. Velg fargen på vanlig måte, og noter deg verdiene til henholdsvis R, G og B feltene.
Verdiene må skrives i en liste for at prosedyren skal forstå dem. RGB-fargeverdiene 151, 25 og 232 skrives slik i en Script-Fu liste:
'(152 25 232).
Legg merke til at det er ett mellomrom mellom fargeverdiene.


RGB-verdiene i "Endre forgrunnsfarge"-vinduet.

Endre forgrunnsfargen ved å gi prosedyren følgende parameter:
(gimp-context-set-foreground '(151 25 232))




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktig parameter.






Prosedyren sendes til konsollet, og gir returverdi.








Forgrunnsfargen endres til ønsket farge.



Legg til et tekstlag ved hjelp av prosedyren «(gimp-text-fontname)»:
(gimp-text-fontname image drawable x y text border antialias size size-type fontname)



Denne prosedyren har 10 parametre:
«image»: bildet som teksten skal legges til i
«drawable»: laget som teksten (opprettet som et flytende utvalg) skal knyttes til. Dersom verdien settes til «-1» opprettes teksten som et eget lag
«x»: antall piksler mellom bildets venstre kant og tekstlagets venstre kant
«y»: antall piksler mellom bildets øvre kant og tekstlagets øvre kant
«text»: innholdet i teksten
«border»: avstanden mellom selve teksten og tekstlagets kant (laggrense-størrelsen)
«antialias»: bestemmer om bokstavenes omriss skal ha jevne kanter (TRUE eller FALSE)
«size»: tekstens størrelse målt i piksler eller tommer (måleenhet bestemmes av «size-type»-parameteret)
«size-type»: bestemmer om bokstavenes størrelse skal måles i PIXELS eller POINTS
«fontname»: skrift-type (font).
Du finner navnene på tekst-typene du kan bruke, ved å velge "Vinduer > Dockable Dialogs" i bildevindu-menyen. Dette åpner "Skrifter"-vinduet. Navnet på tekst-typen skrives i en tekst-streng når du skal bruke det som "fontname"-parameter.
Dersom du ønsker å se hvordan tekst-typen ser ut, høyreklikker du på tekst-navnet i "Skrifter"-vinduet, og velger "Render Font Map..." i menyen som åpnes. Dette vil åpne verktøyvinduet til skriptet "Render Font Map". Klikk på OK-knappen for å åpne et bilde som viser hvordan tekst-typen ser ut.

Bruk returverdien fra «gimp-image-new»-prosedyren (27) for å angi hvilket bilde som teksten skal legges til i:
(gimp-text-fontname 27 -1 35 139 "GIMP!" 5 TRUE 60 PIXELS "ARIAL")




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.






Prosedyren sendes til konsollet, og gir returverdi.






Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Teksten «GIMP!» legges til i bildet som et eget lag med en laggrense 5 piksler fra selve teksten. Bokstavene i teksten har antialiasing, og opprettes med fonten «Arial», str. 60 piksler.



   

 

Endre tekstlagets lag-modus til «Mørkne» ved hjelp av prosedyren «(gimp-layer-set-mode)»:
(gimp-layer-set-mode layer mode)



Denne prosedyren har 2 parametre:
«layer»: laget som det skal endres lag-modus på
«mode»: bestemmer lag-moduset (Normal, Lysne, Differanse etc.)

Bruk returverdien fra «gimp-text-fontname»-prosedyren (239) for å angi at det er tekstlaget det skal endres lag-modus på:
(gimp-layer-set-mode 239 BURN-MODE)




Prosedyren legges inn i konsollets tekstboks, og blir gitt riktige parametre.






Prosedyren sendes til konsollet, og gir returverdi.






Slik ser bildet ut etter at prosedyren er sendt til konsollet.



Tekstlagets modus settes til «Mørkne», slik at tekstfargen blander seg med laget under.

 

Du har nå tegnet en oval logo med 3d-kant, bare ved gi kommandoer til Script-Fu konsollet!
Veien fra å bruke det interaktive konsollet til å skrive Script-Fu skript er ikke lang. Script-Fu er et enkelt skriptspråk, og du behøver ikke å kjenne til så mye Script-Fu programmering for å lage dine egne skript. Les litt mer her om Script-Fu skripting før du setter prosedyrene, som er brukt i eksemplet her, inn i et eget Script-Fu skript.

 

 

 

 

 






André Sætherskar, 2008