Programspråket , Hypertext Preprocessor ( PHP ) är ett grafiskt bibliotek som heter grafik draw ( GD ) . GD kan du dynamiskt skapa bilder enligt förändrade omständigheter, t.ex. grafer som alltid är uppdaterade och vattenmärken på användaren laddade - bilder . Oavsett om du vill rita ett hjärta eller någon annan form , vässa dina kunskaper för att skapa någon typ av bild du vill kommer att utöka möjligheterna för vad du kan göra med GD biblioteket . Instruktioner
1
Öppna en textredigerare som inte gör RTF-formatering , till exempel Anteckningar , och skriv öppningen PHP -taggen : ? . < Php
2
Skriv ett Bézier -funktion för att rita kurvor . GD funktionen biblioteket inte innehåller en sådan funktion , så skapa din egen ( se Resurser ) . Följande funktion använder GD funktionen " imagesetpixel , " som sätter en bildpunkt vid de koordinater som anges av den andra och tredje parametrar . Den fjärde parametern anger färgen och som med de flesta GD -funktioner , är den första parametern en bild identifierare .
Funktion Bezier ( & $ IMG , $ x , $ y , $ färg , $ 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 ] ) ;
$ med = 3 * ( $ y [ 2 ] - $ y [ 1 ] ) - $ CY ,
$ ay = $ y [ 3 ] - $ y [ 0 ] - $ cy - $ av ,
för ( $ 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 , rund ( $ xt ) , runda ( $ yt ) , $ färg ) ;
}
}
3
initiera bilden och de färger du behöver . I följande exempelkod , är bilden initieras för att vara 200 gånger 200 pixlar , med hjälp av " imagecreate " -funktion , vilket också skapar bildidentifierare " $ img . " Färgerna rött och vitt initieras med " imagecolorallocate " funktionen genom att ange värden från 0 till 255 för rött , grönt och blått . Den första färgen initieras blir bakgrundsfärgen
$ img = imagecreate ( 200 , 200 ) ; .
$ Vit = imagecolorallocate ( $ IMG , 255 , 255 , 255 ) ;
$ röd = imagecolorallocate ( $ IMG , 255 , 0 , 0 ) ;
4
Skapa två matriser för x - och y - koordinaterna för de fyra punkter som kommer att avgöra formen på bézierkurva . Att ange kurvans form , tänka i termer av två tangerande vektorer , vars storlek bestämmer mängden svajar vektorns riktning har över kurvan , ungefär som banan för en fallande boll i en stark vind . Den första av de fyra punkter specificerar en av ändpunkterna på kurvan och svansen av den första vektorn och den andra anger huvudet av vektorn. Avståndet mellan punkterna motsvarar storleken och deras relativa position bestämmer riktningen . Den tredje punkten är att huvudet på den andra vektorn och den fjärde punkten är vektorns svans och den andra ändpunkten .
I följande exempel , de fyra punkterna är ( 100 , 40 ) , ( 150 , -10 ) , ( 250 , 80 ) och ( 100 , 180 ) , där den övre , vänstra hörnet av bilden är ( 0 , 0 ) . X- koordinaterna för ändpunkterna är båda 100 , som kretsar dem i duken från vänster till höger . Y - koordinater anger den första slutpunkten vid 40 ligger över den andra på 180 . Vektorn huvuden är både över och till höger om deras respektive slutpunkter. Separera den x - och y - koordinater i egna arrayer :
$ x_coords = array ( 100 , 150 , 250 , 100 ) ;
$ y_coords = array ( 40 , -10 , 80 , 180 ) ;
5
Rita kurvan med Bézier funktionen skapade i steg 2 . I exemplet funktionen , är den första parametern bildidentifierare , de närmaste två parametrarna är de matriser för x - och y - koordinater , den fjärde är färgen , och den sista är upplösningen . Resolutionen parameter bestämmer hur många punkter som ska ritas upp , så anger större antal för väl definierade kurvor . Till exempel , typ :
Bezier ( $ IMG , $ x_coords , $ y_coords , $ röd , 500 ) ;
6
Definiera om koordinater för att rita kurvan på vänster sida av hjärtat , och plotta den med Bézier funktionen . Ändpunkterna för vänster kurvan är desamma som de för den högra . Det enda som ändras är x - koordinaterna för vektorn huvuden . De nya måste vara lika mycket till vänster om mitten som tidigare var till höger om mitten för att varje sida ska vara som en spegelbild av den andra . Till exempel , typ :
$ x_coords [ 1 ] = 50 ;//Första vektor huvud var 150
$ x_coords [ 2 ] = -50 ;//Second vektor huvud var 250 . .
Bezier ( $ IMG , $ x_coords , $ y_coords , $ röd , 500 ) ;
7
Visa bilden och förstöra bilden objektet att frigöra minne . Den " header " -funktionen är nödvändigt för att webbläsaren ska behandla utdata som en bild . Avsluta filen med avslutande PHP -taggen . Till exempel , typ :
header ( " Content -type : image /png " ) ,
imagepng ( $ img ) ,
imagedestroy ( $ img ) ;
? > Addera