Programmeringsspråket , hypertekst preprocessor (PHP ) har et grafisk bibliotek som heter grafikk uavgjort ( GD ) . GD kan du dynamisk lage bilder i henhold til endrede omstendigheter, for eksempel grafer som alltid er oppdatert eller vannmerker på brukerdefinerte opplastede bilder . Enten du ønsker å tegne et hjerte eller en annen form, skjerpe dine ferdigheter til å skape noen form for bildet du vil vil utvide mulighetene for hva du kan gjøre med GD biblioteket. Instruksjoner
en
Åpne en teksteditor som ikke gjør rik tekstformatering , for eksempel Notisblokk , og skriv åpningen PHP tag: ? . < Php
2
Skriv en Bézier -funksjon for å tegne kurver. GD funksjon bibliotek omfatter ikke en slik funksjon , så lag din egen ( se Ressurser) . Følgende funksjon bruker GD funksjonen " imagesetpixel ", som setter en piksel på koordinatene angitt av den andre og tredje parametere. Den fjerde parameteren angir farge , og som med de fleste GD funksjoner, er den første parameteren et bilde identifikator.
Funksjon Bezier ( & $ img , $ x , $ y , $ farge , $ res ) {
$ cx = 3 * ( $ x [ 1 ] - $ x [ 0 ] ) ;
$ bx = 3 * ( $ x [ 2 ] - $ x [ 1 ] ) - $ cx ;
$ ax = $ x [ 3 ] - $ x [ 0 ] - $ cx - $ bx ;
$ cy = 3 * ( $ y [ 1 ] - $ y [ 0 ] ) ;
$ av = 3 * ( $ y [ 2 ] - $ y [ 1 ] ) - $ cy ;
$ y = $ y [ 3 ] - $ y [ 0 ] - $ cy - $ av ;
for ($ i = 0 ; $ i < = $ res , $ i + + ) {
$ t = $ i /$ res ;
$ xt = $ ax * pow ( $ t , 3 ) + $ bx * pow ( $ t , 2 ) + $ cx * $ t + $ x [ 0 ];
$ yt = $ ay * pow ( $ t , 3 ) + $ av * pow ( $ t , 2 ) + $ cy * $ t + $ y [ 0 ];
imagesetpixel ( $ img , round ( $ xt ) , round ( $ yt ) , $ farge);
}
}
3
Initialiser bildet og fargene du trenger. I følgende eksempel kode , blir bildet initialisert å være 200 av 200 piksler , med " imagecreate "-funksjonen , som også lager bildet identifikator " $ img ". Fargene rødt og hvitt er initialisert med " imagecolorallocate "-funksjonen ved å angi verdiene fra 0 til 255. for rødt , grønt og blått. Den første fargen initialisert vil bli bakgrunnsfargen
$ img = imagecreate ( 200 , 200 ) ; .
$ Hvit = imagecolorallocate ( $ img , 255 , 255 , 255 ) ;
$ rød = imagecolorallocate ( $ img , 255, 0 , 0 ) ;
4
Lag to arrays for x - og y - koordinatene til de fire punktene som vil avgjøre formen på Bézier kurve . Å angi formen på kurven , tenke i form av to tangentvektorene , hvis størrelse bestemmer mengden svaie vektorens retning har over kurven , omtrent som banen for en fallende ball i sterk vind. Den første av de fire punktene angir ett av endepunktene av kurven og halen til den første vektoren og den andre angir et innlegg av vektoren . Avstanden mellom punktene som svarer til den størrelse og sin relative posisjon bestemmer retningen . Det tredje punkt er hodet av den andre vektoren og den fjerde punkt er vektoren i halen og det andre endepunktet .
I det følgende eksempel er de fire punktene (100, 40) , ( 150 , -10 ) , ( 250 , 80 ) og ( 100 , 180 ) , der det øvre , venstre hjørne av bildet er ( 0 , 0 ) . Den x- koordinater for de endepunkter er begge 100, som sentrerer dem i lerretet fra venstre til høyre. Den y- koordinatene angir det første endepunktet ved 40 er over den andre ved 180 . Den vektor- hoder er både over og til høyre for sine respektive endepunkter. Separer x - og y - koordinater i egne rekker : en
$ x_coords = array ( 100 , 150 , 250 , 100 ) ;
$ y_coords = array ( 40, -10 , 80 , 180 ) ;
5
Tegn kurven med Bézier funksjon som er opprettet i trinn to . I eksemplet funksjon , er den første parameteren i bildet identifikator , de neste to parametere er de matriser for x - og y- koordinater , mens den fjerde er fargen , og de siste er oppløsningen . Resolusjonen parameteren bestemmer hvor mange poeng som skal plottes , så angi større tall for godt definerte kurver. For eksempel skrive : en
Bezier ( $ img , $ x_coords , $ y_coords , $ rød , 500 ) ;
6
Omdefiner koordinatene til å trekke kurven på venstre side av hjertet , og plotte det med Bézier -funksjonen. Endepunktene for venstre kurven er de samme som for den rette . Det eneste som endres er x - koordinatene for vektor hoder. De nye trenger å være så mye til venstre for sentrum som de tidligere var til høyre for sentrum i rekkefølge for hver side for å være som et speilbilde av den andre. For eksempel skrive : en
$ x_coords [ 1 ] = 50 ;//First vektor hodet var 150
$ x_coords [ 2 ] = -50 ;//Second vektor hodet var 250 . .
Bezier ( $ img , $ x_coords , $ y_coords , $ rød , 500 ) ;
7
Vis bildet og ødelegge bildet objektet for å frigjøre minne . Den " header "-funksjonen er nødvendig for at leseren vil behandle resultatet som et bilde. Avslutt filen med den avsluttende PHP -koden. For eksempel skrive : en
header ( " Content -type : image /jpeg ");
imagepng ( $ img ) ;
imagedestroy ( $ img );
? >