Marc: problem mit ImageColorAllocate

Hallo Leute!

ich war etwas am rumprobieren, als ich auf folgenden fehler stoss... :-(

also ich habe einfach ein bisserl rumexperimentiert, als plötzlich der folgende fehler auftrat: plötzlich werden weiter unten keine neue farbedefinitionen mehr angenommen, sondern die textausgabe erfolgt leider nur in blau... (wieso überhaupt blau und nicht rot oder grün?? *g*)

<?
  Header( "Content-type: image/png");
  $im = imagecreate(175,175);

$r=44;
  $g=109;
  $b=175;
  for ($i=0;$i<175;$i++)  #23
  {
    $rr=$r-($i/2);
    if($rr=0) $rr=0;
    $gg=$g-($i/2);
    if($rr=0) $rr=0;
    $bb=$b-($i/2);
    if($rr=0) $rr=0;
    $xyz = ImageColorAllocate($im, $rr, $gg, $bb);
    ImageLine($im,0,$i,175,$i,$xyz);
  }

$color = ImageColorAllocate ($im, 128, 255, 128);
  $text="Hello";

ImageTTFText ($im, 20, 5, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 25, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 45, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 65, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 85, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 105, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 125, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 145, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 165, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 185, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 205, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 225, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 245, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 265, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 285, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 305, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 325, 70, 70, $color, "dabomb.ttf", $text);
  ImageTTFText ($im, 20, 345, 70, 70, $color, "dabomb.ttf", $text);

#######AB HIER WERDEN DIE FARBEN $COLOR NIMMER ÜBERNOMMEN!TEXT WIRD IN BLAU GESCHRIEBEN!#########
  $color=imagecolorAllocate($im,255,128,255);
  ImageTTFText ($im, 20, 5, 70, 70, $color, "dabomb.ttf", $text);
  $color=imagecolorAllocate($im,225,98,225);
  ImageTTFText ($im, 21, 6, 71, 70, $color, "dabomb.ttf", $text);
  $color=ImageColorAllocate($im,195,68,195);
  ImageTTFText ($im, 22, 7, 72, 70, $color, "dabomb.ttf", $text);
  $color=ImageColorAllocate($im,165,38,165);
  ImageTTFText ($im, 23, 8, 73, 70, $color, "dabomb.ttf", $text);
  $color=ImageColorAllocate($im,135,8,135);
  ImageTTFText ($im, 24, 9, 74, 70, $color, "dabomb.ttf", $text);

ImagePng($im);
  ImageDestroy($im);
?>

MFG Marc

  1. Hiho,

    also ich habe einfach ein bisserl rumexperimentiert, als plötzlich der folgende fehler auftrat:
    plötzlich werden weiter unten keine neue farbedefinitionen mehr angenommen, sondern die
    textausgabe erfolgt leider nur in blau... (wieso überhaupt blau und nicht rot oder grün?? *g*)

    [...]

    $rr=$r-($i/2);
        if($rr=0) $rr=0;
        $gg=$g-($i/2);
        if($rr=0) $rr=0;
        $bb=$b-($i/2);
        if($rr=0) $rr=0;

    Nun, ganz einfach: wegen der if's.
    if($var = 0) setzt $var auf 0 und returned True.
    Richtigerweise hiesse es if($var == 0) $var = 0; wobei das eigentlich relativ sinnlos ist. Wenn eine
    Variable 0 ist, muss sie doch nicht erst auf 0 gesetzt werden?

    Also einfach die Schleife umaendern in
    $rr = $r - $i / 2;
    $gg = $g - $i / 2;
    $bb = $b - $i / 2;

    Richtig, die Klammern sind auch nicht noetig. / hat eine hoehere Bindung als - (Punkt vor Strich
    ;-)

    Gruss,
     Christian
     http://wwwtech.de

    chr(ord($1)-5):chr(ord($1)-3))sieg;s s^s$_see;
    __END__
    uwlsy%*Sr%kqdphv%yr%AFN4%dy%zzzyhfm3ihC*1'as'>

    1. Hi! :-)

      $rr=$r-($i/2);
          if($rr=0) $rr=0;
          $gg=$g-($i/2);
          if($rr=0) $rr=0;
          $bb=$b-($i/2);
          if($rr=0) $rr=0;

      sorry, aber da soltle eigentlich ein kleiner als null stehen...
      also wie folgt... *g*
      $rr=$r-($i/2);
      if($rr<0) $rr=0;
      $gg=$g-($i/2);
      if($rr<0) $rr=0;
      $bb=$b-($i/2);
      if($rr<0) $rr=0;

      Zuerst mal vielen Dank für deine vielen Tipps! :-)

      Jedoch bringt es mich der lösung überhaupt nicht weiter, denn als ich die modifikationen vorgenommen hab, sah es immer noch gleich aus... :-(

      <img src="http://marcoweber.purespace.de/images/bild2.png" border=0 alt="">

      wieso werden die farben in diesem teil nimmer übernommen??
        #######AB HIER WERDEN DIE FARBEN $COLOR NIMMER ÜBERNOMMEN!TEXT WIRD IN BLAU GESCHRIEBEN!#########
        $color=imagecolorAllocate($im,255,128,255);
        ImageTTFText ($im, 20, 5, 70, 70, $color, "dabomb.ttf", $text);
        $color=imagecolorAllocate($im,225,98,225);
        ImageTTFText ($im, 21, 6, 71, 70, $color, "dabomb.ttf", $text);
        $color=ImageColorAllocate($im,195,68,195);
        ImageTTFText ($im, 22, 7, 72, 70, $color, "dabomb.ttf", $text);
        $color=ImageColorAllocate($im,165,38,165);
        ImageTTFText ($im, 23, 8, 73, 70, $color, "dabomb.ttf", $text);
        $color=ImageColorAllocate($im,135,8,135);
        ImageTTFText ($im, 24, 9, 74, 70, $color, "dabomb.ttf", $text);

      MFG Marc