Hvordan Tegn et hjerte med PHP GD

Hvordan Tegn et hjerte med PHP GD


Programmeringsspråk, Hypertext Preprocessor (PHP) har en grafisk bibliotek kalt grafikk tegne (GD). GD kan du dynamisk lage bilder i henhold til endrede omstendigheter, for eksempel grafer som alltid er oppdatert eller vannmerker på bruker lastet opp bilder. Enten du ønsker å tegne et hjerte eller en annen form, for å skjerpe dine ferdigheter skape noen form for bildet du vil vil utvide mulighetene for hva du kan gjøre med GD biblioteket.

Bruksanvisning

1 Åpne en teksteditor som ikke gjør rik tekstformatering, for eksempel Notisblokk, og skriv åpningen PHP-koden: <? Php?.

2 Skriv en Bézier-funksjon for å tegne kurver. GD-funksjonen biblioteket ikke har 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, runde ($ xt), runde ($ yt), $ farge);

}

}

3 Initial bildet og fargene du trenger. I følgende eksempel kode, blir bildet initialisert å være 200 av 200 piksler, ved hjelp av "imagecreate" -funksjonen, som også skaper bildet identifikator "$ img." Fargene rød og hvit er initialisert med "imagecolorallocate" funksjon ved å angi de verdier fra 0 til 255 for rød, grønn og blå. Den første farge initialisert blir 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. For å spesifisere formen på kurven, tenker i form av to tangentvektorene, hvis størrelse bestemmer hvor mye svaie vektoren retning har over kurven, mye som banen til en fallende ball i en sterk vind. Den første av de fire punktene angir ett av endepunktene i kurven og halen av den første vektoren og den andre angir et innlegg av vektoren. Avstanden mellom punktene svarer til størrelsen og deres relative posisjon bestemmer retningen. Det tredje punktet er leder av den andre vektoren og den fjerde punkt er vektoren hale og den andre endepunktet.

I følgende eksempel, de fire punktene er (100, 40), (150, -10), (250, 80) og (100, 180), der det øvre, venstre hjørne av bildet er (0, 0). X-koordinater for de endepunktene befinner seg 100, som sentrerer dem i lerretet fra venstre til høyre. Y- koordinatene angir den første endepunktet 40 er over den andre ved 180. Vektor hoder er både over og til høyre for sine respektive endepunkter. Skill x- og y-koordinatene i egne rekker:

$ X_coords = array (100, 150, 250, 100);

$ Y_coords = array (40, -10, 80, 180);

5 Tegn kurve med Bézier funksjon som er opprettet i trinn 2. I eksemplet funksjon, er den første parameteren av bildet identifikator; de neste to parametrene er arrays for x- og y-koordinater; den fjerde er fargen; og den siste er oppløsningen. Resolusjonen parameteren bestemmer antall punkter som skal plottes, så spesifisere større tall for veldefinerte kurver. For eksempel inn:

Bezier ($ img, $ x_coords, $ y_coords, $ rød, 500);

6 Omdefinere koordinatene til å trekke kurven på venstre side av hjertet, og plotte det med Bézier-funksjonen. Endepunktene for venstre kurve er de samme som for den høyre. Det eneste som endres er x-koordinatene til vektoren 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 å være som et speilbilde av den andre. For eksempel inn:

$ x_coords [1] = 50; // Først 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 ut som et bilde. Avslutt filen med lukking av PHP-koden. For eksempel inn:

header ( "Content-type: image / png");

imagepng ($ img);

imagedestroy ($ img);

?>