Image creation via PHP

Hi, I  have recently been working on a script which will create an image via PHP, but seems to have stumbled upon a big error.

My script is..

<?

if($ploc=="Hev") { $im = imagecreatefrompng('Hev.png'); }
else if($ploc=="Sky") { $im = imagecreatefrompng('Sky.png'); }
else if($ploc=="Sur") { $im = imagecreatefrompng('Sur.png'); }
else if($ploc=="Dun") { $im = imagecreatefrompng('Dun.png'); }
else if($ploc=="Hel") { $im = imagecreatefrompng('Hel.png'); }

      $kdc=0;
      $kds=0;

      ?>
            <script language="JavaScript" type="text/javascript">
                  function loc(x,y) { s_Loc.innerHTML="Location: "+x+","+y; }
                  function ut() { s_Loc.innerHTML="<br>"; }
                  function kd(kdnum) { s_KD.innerHTML=kdnum; }
                  function kds(kdnum) { s_KDS.innerHTML=kdnum; }
            </script>
      <?

      echo "Number of kingdoms: <span id=s_KD>".$kdc."</span> || Kingdoms Checked: <span id=s_KDS>".$kds."</span><p><span id=s_Pic>Old :: <br><img src=result.jpeg></span><p>";

$width=300;
$height=300;

$image=imagecreate($width,$height);
$bg=imagecolorallocate($image, 0x00,0x00,0x00);

for ($i=0;$i<300;$i++){
      for ($j=0;$j<300;$j++){
            $start_x = $j;
            $start_y = $i;
            $color=imagecolorat($im, $start_x, $start_y);
            if($color==$colour) {
                  $kdc++;
                  imagesetpixel($image,$start_x,$start_y,$color);
            }
            $kds++;
      }
      echo "<script>kds(\"".number_format($kds)."\");</script>";
      echo "<script>kd(\"".number_format($kdc)."\");</script>";
}

imagejpeg($image,"result.jpeg");
imagedestroy($image);

echo "<p>New :: <br><img src=result.jpeg>";

?>

The imagesetpixel() seems to not be working at all and therefore it prints a fully black image. This shouldn't happen. Can anyone suggest a fix? (based on the above script). Quickest and most efficient answer gets..... ooooohh.... 75 points?

EDIT: Upped to 100
LVL 9
VampireofdarknessAsked:
Who is Participating?
 
Computer101Commented:
PAQed, with points refunded (100)

Computer101
E-E Admin
0
 
_corey_Commented:
Where is $colour defined?

Have you verified the color value and the fact that imagesetpixel even gets called?
0
 
VampireofdarknessAuthor Commented:
Oh, sorry.
   $colour is a variable from a previous page (appears in /xx.php?colour=xx)
   $ploc is also the same
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
VampireofdarknessAuthor Commented:
and imagesetpixel does get called as it shows that there are 10,144 color matches
0
 
VampireofdarknessAuthor Commented:
Found a solution for myself... now to close this....

Thanks for your help anyway
0
 
_corey_Commented:
I believe posting on the CS area will get it removed for you.

Was it a bad setting of $colour or something else?
0
 
VampireofdarknessAuthor Commented:
All I needed to do was define $colour before the loop with

$black=imagecolorallocate($image, 0x00,0x00,0x00);

for a black colour, etc..etc.. then use those colours.
0
 
_corey_Commented:
Ah, so $colour was simply being defined in the loop and constantly matching up with the value of black?
0
 
VampireofdarknessAuthor Commented:
$colour wasn't being defined, for some reason although it should have been. Which is why it posted black.
0
 
_corey_Commented:
That's what I had suspected when I saw it wasn't defined.  It was being defined with a default nothing value and so then black always matched with it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.