Die Programmiersprache Hypertext Preprocessor (PHP) hat eine Grafik-Bibliothek namens Grafiken draw ( GD) . GD können Sie dynamisch erstellen Bilder nach wechselnden Umständen , wie z. B. Grafiken , die immer aktualisiert werden oder Wasserzeichen auf vom Nutzer hochgeladenen Bilder . Ob Sie ein Herz oder eine andere Form zu zeichnen , Schärfen Sie Ihre Fähigkeiten, um jede Art von Bild, das Sie wollen die Möglichkeiten , was man mit der GD-Bibliothek zu tun erweitern erstellen möchten. Anleitung
1
Öffnen Sie einen Text -Editor, der das nicht tut Rich-Text- Formatierung , wie z. B. Editor , und geben Sie die Öffnung PHP tag: . < Php
2
schreiben Sie eine Bézier -Funktion zum Zeichnen Kurven . Die GD Funktionsbibliothek enthält keine solche Funktion , so erstellen Sie Ihre eigenen ( siehe Ressourcen). Die folgende Funktion verwendet die GD -Funktion " imagesetpixel ", die ein Pixel an den Koordinaten, die durch den zweiten und dritten Parameter spezifiziert setzt . Der vierte Parameter gibt die Farbe und die , wie bei den meisten GD -Funktionen , der erste Parameter ein Bild Kennung ist .
Funktion bezier ( & $ img , $ x , $ y , $ farbe , $ 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 ] );
$ von = 3 * ( $ y [2] - $ y [1] ) - $ cy ;
$ ay = $ y [3 ] - $ y [ 0 ] - $ cy - $ durch ;
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 ) + $ von * pow ( $ t , 2 ) + $ cy * $ t + $ y [0];
imagesetpixel ($ img , round ( $ xt ) round ( $ yt ) , $ farbe ); }
}
3
initialisieren Sie das Bild und die Farben, die Sie benötigen . Im folgenden Beispiel -Code , wird das Bild initialisiert bis 200 von 200 Pixel, mit dem " imagecreate " -Funktion, die schafft auch das Bild Kennung " $ img . " Die Farben rot und weiß sind mit dem " ImageColorAllocate "-Funktion durch Angabe der Werte von 0 bis 255 für Rot, Grün und Blau initialisiert. Die erste Farbe initialisiert wird die Hintergrundfarbe zu
$ img = imagecreate (200, 200); .
$ White = ImageColorAllocate ($ img , 255, 255, 255 );
$ rot = ImageColorAllocate ($ img , 255, 0 , 0);
4
erstellen Sie zwei Arrays für die x- und y- Koordinaten der vier Punkte, die die Form der bestimmen wird Bézier-Kurve . Um die Form der Kurve angeben , in Bezug auf zwei Tangentenvektoren , deren Größe bestimmt die Menge der Herrschaft denken Richtung des Vektors hat über der Kurve , ähnlich wie der Weg eines fallenden Ball in einem starken Wind. Die erste der vier Punkte gibt einen der Endpunkte der Kurve und dem Schwanz des ersten Vektors und die zweite den Endpunkt des Vektors . Der Abstand zwischen den Punkten entspricht, auf die Größe und die relative Position bestimmt die Richtung . Der dritte Punkt ist der Kopf des zweiten Vektors und der vierte Punkt ist der Vektor der Schwanz und der andere Endpunkt.
Im folgenden Beispiel sind die vier Punkte (100 , 40) , (150, -10) , (250, 80 ) und (100 , 180) , wobei die obere linke Ecke des Bildes ist (0 , 0). Die x - Koordinaten für die Endpunkte sind beide 100, die sie zentriert in der Leinwand von links nach rechts . Die y- Koordinaten sind der erste Endpunkt 40 ist über der anderen bei 180 . Die Vektor- Köpfe sind sowohl oberhalb als auch auf der rechten Seite der jeweiligen Endpunkte. Trennen Sie die x -und y- Koordinaten in die eigenen Reihen :
$ x_coords = array (100 , 150, 250 , 100);
$ y_coords = array ( 40 , -10, 80 , 180) ;
5
zeichnen Sie die Kurve mit dem Bézier -Funktion in Schritt 2 erstellt haben. In dem Beispiel -Funktion ist der erste Parameter der Bild-Identifikator , die nächsten beiden Parameter sind die Arrays für die x- und y- Koordinaten , die vierte ist die Farbe , und der letzte ist die Auflösung. Die Auflösung Parameter bestimmt die Anzahl der Punkte geplottet werden , so geben Sie eine größere Anzahl an gut definierten Kurven . Geben Sie z. B. :
bezier ($ img , $ x_coords , $ y_coords , $ rot, 500);
6
Definieren Sie die Koordinaten , um die Kurve auf der linken Seite von zeichnen das Herz und den Plot mit der Bézier -Funktion. Die Endpunkte für die linke Kurve sind die gleichen wie diejenigen für das rechte . Das einzige, was sich ändert, ist die x - Koordinaten für die Vektor- Köpfe . Die neue müssen so weit links von der Mitte wie die vorherigen waren die rechts von der Mitte , um für jede Seite , wie ein Spiegelbild des anderen ist. Geben Sie z. B. :
$ x_coords [1] = 50 ;//First Vektor Kopf war 150
$ x_coords [2] = -50 ;//Second Vektor Kopf war 250 . .
bezier ($ img , $ x_coords , $ y_coords , $ rot, 500);
7
Zeigen Sie das Bild und zerstören das Bildobjekt kostenlos den Speicher . Der "header" -Funktion ist notwendig, damit der Browser die Ausgabe als Bild behandeln wird . Beenden Sie die Datei mit der Schließung der PHP -Tag. Geben Sie z. B. :
header (" Content-type : image /png ");
imagepng ($ img );
imagedestroy ($ img );
? >