Vinzenz Mai: PHP beendet Bild zeichnen

Beitrag lesen

Hallo,

ich habe ein Problem. PHP beendet vorzeitig das Zeichnen seines Bildes mit imagesetpixel().

» <?php  

>     $Diagramm=imagecreate(1000,200);  
  
# Du hast also eine Bildressource mit den Koordinaten zwischen den Werten  
  
# 0 und 999 auf der x-Achse und  
# 0 und 199 auf der y-Achese  
  
# erzeugt  
  

>     imagecolorallocate($Diagramm,255,255,255);  
>     for($Zaehler1=0;$Zaehler1<=1000;$Zaehler1++)  
>     {  
>         for($Zaehler2=0;$Zaehler2<=200;$Zaehler2++)  
>         {  
>             $PixelFarbe=imagecolorallocate($Diagramm,255,80,70);  
  
# warum erzeugst Du bei jedem Schleifendurchlauf immer wieder erneut die  
# gleiche Farbe? Das ist überflüssig. Raus damit aus den Schleifen!  
# Nur wenn die Farbe sich ändert, ist ein Aufruf von imagecolorallocate()  
# erforderlich.  
  

>             imagesetpixel($Diagramm,$Zaehler1,$Zaehler2,$PixelFarbe);  
  
# und hier setzt Du beim letzten Durchlaufen des ersten Durchgangs der  
# inneren Schleife den Pixel an der Koordinatenposition 0, 200. Diese  
# gibt es der Bildressource nicht.  
# Deine Schleifen laufen jeweils um 1 zu weit.  
  

Um Deinen Code nicht an zwei Stellen anpassen zu müssen, wenn Du die Bilddimensionen änderst, rate ich Dir dazu, die Ausmaße zu Beginn in Variablen zu speichern und anschließend auf diese Variablen zuzugreifen:

$breite = 1000;  
$hoehe  = 200;  
$diagramm = imagecreate($breite, $hoehe);  
# ...  
  
for ($x = 0; $x < $breite; $x++) {  
# Die Variablenbezeichnungen $x für den Wert der x-Koordinate  
# und $y für den Wert der y-Koordinate sind besser als $Zaehler1 und $Zaehler2  
# ...  

Freundliche Grüße

Vinzenz