burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
10.02.2012, 09:44 Uhr - Impressum

Tutorials - Fortgeschritten - Bilder und Thumbnails - Zeichnungen

Tutorials - Fortgeschritten
Bilder und Thumbnails: Zeichnungen
In das erstellte, leere Bild fügen wir nun mit imageLine() eine Linie ein.

imageline() funktioniert folgendermaßen:
imageline( bild, xA, yA, xE, yE, farbe )
xA, yA sind die Anfangspunkte der Linie
xE, yE sind die Endpunkte der Linie

Farben: Als Farbe kann man leider nicht einfach Worte wie "rot" "blau" oder so benutzen, man muss dem Bild die Farbe hinzufügen, denn ein Bild, das gerade per imageCreate() erstellt wurde, hat noch keine Farben. Auch das Schwarz, das man als Hintergrundfarbe sieht, ist an sich keine Farbe. Es ist nichts.
Die erste Farbe, die man per imageColorAllocate dem Bild zuweist benutzt PHP als Hintergrundfarbe.
Im Beispiel wird dies Schwarz sein (0, 0, 0) (kein Rot, kein Grün, kein Blau --> kein Nix --> Schwarz)

Weitere Farben speichert man am besten in einer Variablen, so dass man sie später wieder benutzen kann:

$farbe = imageColorAllocate( bild, rotwert, grünwert, blauwert ) - die Farbwerte jeweils von 0 bis 255

Nun ja, viele Worte... hier eine gelbe Linie quer durch das Bild mit schwarzem Hintergrund:
<?php
header("Content-Type: image/jpeg");
$BILD = imageCreate(400,300);     /* Bild erstellt, Bild absolut leer */
imageColorAllocate($BILD,0,0,0);     /* erstes Allocate -> der Hintergrund des Bildes wird Schwarz sein */

$gelb = imageColorAllocate($BILD,255,255,0);     /* rot: 255, grün: 255, blau: 0 --> gelb, siehe Farbenlehre */

imageLine($BILD,0,0,400,300,$gelb);     /* eine gelbe Linie von (0, 0) bis (400, 300) */

imageJPEG($BILD);
?>
Kleine optische Spielerei:
<?php
header("Content-Type: image/jpeg");
$BILD = imageCreate(400,300);

$schwarz = imageColorAllocate($BILD,0,0,0);     /* 1. Allocate -> daher Hintergrund schwarz */
$rot = imageColorAllocate($BILD,255,0,0);     /* weitere Farben */
$grün = imageColorAllocate($BILD,0,255,0);
$gelb = imageColorAllocate($BILD,255,255,0);
$blau = imageColorAllocate($BILD,0,0,255);

for($x = 0; $x <= 400; $x += 10) {          /* $x durchwandert nun von 0 bis 400 */
     imageLine($BILD, $x, 0, 400, 300, $rot);     /* die roten Strahlen gehen von oben ($x, 0) nach rechts unten (400, 300) */
     imageLine($BILD, $x, 300, 400, 0, $gelb);     /* die gelben von unten ($x, 300) nach rechts oben (400, 0) */
     imageLine($BILD, $x, 0, 0, 300, $grün);          /* die grünen von oben ($x, 0) nach links unten (0, 300) */
     imageLine($BILD, $x, 300, 0, 0, $blau);      /* die blauen von unten ($x, 300) nach links oben (0, 0) */
}

imageJPEG($BILD);
?>
Viele kleine Funktionen zum zeichnen stehen bereit:
<?php
header("Content-Type: image/jpeg");
$BILD = imageCreate(400,300);

$schwarz = imageColorAllocate($BILD, 0, 0, 0);
$rot = imageColorAllocate($BILD, 255, 0, 0);
$grün = imageColorAllocate($BILD, 0, 255, 0);
$gelb = imageColorAllocate($BILD, 255, 255, 0);
$blau = imageColorAllocate($BILD, 0, 0, 255);

imageRectangle($BILD, 10, 10, 390, 290, $rot);     /* Rechteck - von x, y, bis x, y */
imageEllipse($BILD, 200, 150, 280, 280, $grün);     /* Ellipse - Mittelpunkt x, y, Höhe, Breite */
imageFilledRectangle($BILD, 160, 140, 240, 160, $blau);     /* gefülltes Rechteck - von x, y, bis x, y */

$Eckpunkte = array(     /* Diese Eckpunkte werden für das Dreieck benutzt */
               150,100,     /* 1.Eckpunkt x, y */
               250,100,     /* 2.Eckpunkt x, y */
               200,150);     /* 3.Eckpunkt x, y */
imagePolygon($BILD, $Eckpunkte, 3, $gelb);     /* Dreieck - Array mit Eckpunkten, Anzahl der Punkte */

imageJPEG($BILD);
?>
Will man das aktiv erstellte Bild jetzt auf seiner Seite einbinden macht man das in etwa so:
(/run/Tutorials/.../x.html ist die PHP-Datei, in der das letzte Script drinne is)
<html>
     <body style="background-color:black; color:white; font-weight:bold">
          Eine kleine PHP-Zeichnung:<br />
          <img src="/run/Tutorials/Fortgeschritten/Bilder_und_Thumbnails/Zeichnungen/2.html" />
     </body>
</html>
© 2004-2005 - Impressum