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'); }


            <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; }

      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>";


$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) {
      echo "<script>kds(\"".number_format($kds)."\");</script>";
      echo "<script>kd(\"".number_format($kdc)."\");</script>";


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
Who is Participating?
PAQed, with points refunded (100)

E-E Admin
Where is $colour defined?

Have you verified the color value and the fact that imagesetpixel even gets called?
VampireofdarknessAuthor Commented:
Oh, sorry.
   $colour is a variable from a previous page (appears in /xx.php?colour=xx)
   $ploc is also the same
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
VampireofdarknessAuthor Commented:
Found a solution for myself... now to close this....

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

Was it a bad setting of $colour or something else?
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.
Ah, so $colour was simply being defined in the loop and constantly matching up with the value of black?
VampireofdarknessAuthor Commented:
$colour wasn't being defined, for some reason although it should have been. Which is why it posted black.
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.
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.