Friedrich: PHP beendet Bild zeichnen

Hallo,

ich habe ein Problem. PHP beendet vorzeitig das Zeichnen seines Bildes mit imagesetpixel().
[PHP]<?php
$Diagramm=imagecreate(1000,200);
imagecolorallocate($Diagramm,255,255,255);
for($Zaehler1=0;$Zaehler1<=1000;$Zaehler1++)
{
for($Zaehler2=0;$Zaehler2<=200;$Zaehler2++)
{
$PixelFarbe=imagecolorallocate($Diagramm,255,80,70);
imagesetpixel($Diagramm,$Zaehler1,$Zaehler2,$PixelFarbe);
}
}
header ( 'Content-Type: image/gif' );
imagegif($Diagramm);
?>
[/PHP]
Bei mir erscheint eine rote Linie und das wars!
http://img195.imageshack.us/img195/4213/php.gif
Weiß jemand wo das Problem liegen könnte?

Ich brauche diese Art Schleife zum Erstellen eines Profils in einem anderen ähnlichen Programmen, dort wird Schleife auch vorzeitig beendet.

Gruß, Friedrich

  1. Hello Friedrich,

    Bei mir erscheint eine rote Linie und das wars!

    Und was sollte erscheinen?
    Bisschen Funktionsbeschreibung wäre ja ganz nett, damit man weiß was passieren sollte. Wir können ja jetzt nur sehen, was Du prommiert _hast_ und nicht, was Du programmieren _wolltest_.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      Und was sollte erscheinen?

      Ohne zu wissen, was Du erreichen wolltest:

      Vielleicht hilft es Dir, wenn Du

      $Diagramm=imagecreate(1000,200);

      gegen

      $Diagramm=imagecreatetruecolor(1000,200);

      austauschst?

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. 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