I den forrige artikkelen fokuserte vi på lastet og manipulert bilder med PHP. Vi lærte å rotere, endre størrelse, skala eller flip et bilde. Vi lærte også om forskjellige filtre og konvoluttmatrisen. Disse veiledningene dekket også noen praktiske bruksområder av GD-biblioteket som å endre størrelse på alle bilder i en katalog eller legge til vannmerker på flere bilder samtidig.
Foruten å bruke GD til å manipulere vanlige bilder, kan vi også lage vår egen fra grunnen av. Ulike funksjoner i biblioteket kan brukes til å tegne grunnleggende former som ellipser, sirkler, rektangler, polygoner og enkle linjer. Med noen matteformer kan disse figurene skape flotte mønstre. Det er også funksjoner tilgjengelig for å tegne tekst på det gjengitte bildet, noe som åpner opp mange muligheter.
Denne opplæringen vil lære deg hvordan du tegner grunnleggende former i PHP og hvordan du gjengir tekst ved hjelp av favorittfonten din.
Vi vil lære om grunnleggende former i denne delen og deretter dekke linjetykkelse, pensler og linjestiler senere.
Du kan tegne en enkel rett linje mellom to poeng ved hjelp av imageline ($ image, $ x1, $ y1, $ x2, $ y2, $ farge)
funksjon. De $ bilde
parameter er en bilde ressurs som vil ha blitt opprettet tidligere ved hjelp av funksjoner som Image ()
eller imagecreatefromjpeg ()
. Vi skal bruke Image ()
gjennom hele denne opplæringen for å lage nye bilder fra bunnen av. Funksjonen vil tegne en horisontal linje hvis $ y1
er lik $ y2
. På samme måte vil den tegne en vertikal linje hvis $ x1
er lik $ x2
.
Funksjonen imagearc ($ image, $ cx, $ cy, $ bredde, $ høyde, $ start, $ ende, $ farge)
kan tegne sirkulære buer med $ cx
og $ cy
som sentrum. De $ bredde
og $ høyde
Parametrene bestemmer størrelsen på lysbuen på forskjellige akser. De $ start
og $ end
parametere angir start- og sluttvinkelen til buen i grader. Hvis du vil tegne komplette buer fra 0 til 360 grader, kan du bruke alternativet imageellipse ($ image, $ cx, $ cy, $ bredde, $ høyde, $ farge)
funksjon.
Du kan tegne rektangler over et bilde ved hjelp av imagerectangle ($ image, $ x1, $ y1, $ x2, $ y2, $ farge)
funksjon. De $ x1
og $ y1
verdiene bestemmer det øverste venstre hjørnet av rektangelet. De $ x2
og $ y2
verdier bestemmer nederste høyre hjørne. Det er også en bildepolygon ($ image, $ poeng, $ num_points, $ color)
funksjon, som kan lage en polygon med et hvilket som helst antall sider eller poeng. De $ punkter
parameter er en matrise hvor to elementer er sammenkoblet for å få koordinatene til et bestemt punkt.
En annen funksjon kalles imageopenpolygon ()
har blitt lagt til PHP 7, som ikke trekker en linje mellom første og siste punkt.
I det følgende eksemplet har vi brukt alle disse funksjonene til å lage en linjetegning med en hytte, sol og bakken.
Det viktigste her er bare å finne ut verdien av forskjellige koordinater. Jeg ønsket å tegne alt i forhold til størrelsen på det opprinnelige bildet, så jeg brukte $ img_height
og $ img_width
variabler for å beregne koordinatene til forskjellige punkter.
Bildet ovenfor har et par problemer som svært tynne linjer og ingen fargestoffer. Alle disse problemene kan løses enkelt ved hjelp av funksjoner som imagesetthickness ()
og imagefilledrectangle ()
.
De imagesetthickness ($ bilde, $ tykkelse)
funksjonen setter tykkelsen på gjengitte linjer når du tegner rektangler, polygoner, buer, etc. For eksempel, innstilling $ tykkelse
til 5 vil gjøre noen figur tegnet med imagerectangle ()
, imagearc ()
, imagepolygon ()
, etc. 5 piksler tykk.
Hver tegnefunksjon har også en fylt fargeversjon som fyller den aktuelle figuren med en gitt farge. For eksempel, imagefilledrectangle ()
vil fylle det trukket rektangel med den oppgitte fargen.
En veldig nyttig GD-funksjon er imagesetbrush ($ image, $ brush)
. De $ pensel
parameter i denne funksjonen er bare en annen bilde ressurs som kan brukes til å tegne linjer. For eksempel kan du bruke en gjennomsiktig vektortegning av en blomst som en pensel for å legge til fine blomstermønstre på bildet ditt. Kodestykket nedenfor ble skrevet for å bruke bildet av en sky som en børste når du tegner et punkt. Dette legger til en eneste sky i himmelen.
Jeg fant dette skybildet på Pixabay og skalert det ned til en passende størrelse for prosjektet vårt.
Den komplette koden for hutbildet er gitt nedenfor. Vi har bare lagt til to versjoner av hver figur, en for å tegne omrisset og den andre for å fylle ut fargen.
Dette er det endelige resultatet av PHP GD-koden ovenfor.
PHP GD leveres med fire forskjellige funksjoner for å la deg gjengi enten flere tegn eller bare ett tegn i horisontal eller vertikal retning. Disse funksjonene er imagechar ()
, imagecharup ()
, imagestring ()
, og imagestringup ()
. Alle aksepterer de samme seks parametrene, så vi skal bare diskutere imagechar ()
funksjon her.
De $ font
parameter imagechar ($ image, $ font, $ x, $ y, $ string, $ color)
funksjonen er rett og slett størrelsen på den gjengitte teksten. Den aksepterer bare heltallverdier fra 1 til 5. Den $ string
parameter er teksten du vil gjengi. Hvis du sender en streng med flere tegn til char-funksjonene, blir bare det første tegnet gjengitt på bildet. De imagecharup ()
og imagestringup ()
funksjoner vil gjøre teksten vertikalt fra bunn til topp.
Når det kommer til gjengivelse av tekst, er de fire funksjonene vi diskuterte over, svært begrenset. Du vil oppdage at selv den største skriftstørrelsesverdien er for liten til normal bruk. Teksten kan også bare skrives horisontalt og vertikalt.
Heldigvis har GD også en imagettftext ($ image, $ size, $ vinkel, $ x, $ y, $ color, $ fontfile, $ text)
funksjon som kan gjengi teksten i hvilken som helst skrift du vil ha. De $ fontfile
parameter brukes til å spesifisere banen til TrueType-fonten du vil bruke til å vise teksten. De $ x
og $ y
parametere bestemmer startposisjonen for den gjengitte teksten.
Følgende eksempel bruker alle disse funksjonene til å lage noen fine teksteffekter.
Som du ser, har vi gjengitt samme tekst med samme skrift i litt forskjellige posisjoner for å skape noen effekter som grunnleggende tekstskygge. Det viktige å huske på er at teksten gjengitt av en hvilken som helst tekstfunksjon vil helt gjemme teksten under den i tilfelle overlapping. Her er det endelige bildet som er oppnådd etter å ha kjørt ovenstående kode.
Målet med denne opplæringen var å få deg kjent med forskjellige GD-funksjoner for å tegne grunnleggende former fra grunnen i PHP. Med hjelp av en liten matte, vil du kunne bruke disse funksjonene til å skape mer kompliserte former som vanlige polygoner, avrundede rektangler osv..
PHP GD har også et par svært nyttige funksjoner for gjengivelse av tekst på et bilde. Bruken av en fin skrift vil sørge for at den gjengitte teksten ikke ser merkelig ut når den legges på vanlige bilder lastet fra forskjellige filbaner.
Har du laget flere fancy teksteffekter i PHP? Vennligst del dem med oss i kommentarene.