Returning junk when using imagecreatefrompng()

I have a IIS server running php 5.4.9

I have added the extension path  of where I put the php_gd2.php and added "extension = php_gd2.php" on my php.ini

When I fun the following script:

<?php 
                 


$string = 'TEST TEXT';
$im     = imagecreatefrompng("images/backtoa_manager.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
                    
                    
                    ?>

Open in new window


I get a bunch of junk on my browser. that looks like png code.
‰PNG  IHDRÉ      Ÿ­Å IDATxœí{y´eWYçoOgºço¨¹*y•Te ¤ª ‘0…µƒ4 „]vŒ-.•W°qÓy¸Q”´¢µÁ4þ!Ø!C‘W$Á„ªT*©$j®TUjxӝÎ=çì±ÿØ÷ÞºU‡vi/×Êþã­óöÙgßþöoû›.ðr{¹½Ü^nÿ¾ùç½tÿjŒ¼ÜþåíÜLà_¼}ÌÿÍvÞp2çBHÿ!££IÀySœû°ÖzÒÃOàœëÏé?x)/|”É‘·çžÈyËtä•ñpiçXò“;?Õ`2r>§#¼GÞ éŸ<²ð18€Rznž 8s#Ôû2YËùÂñ#=ÿ„7˜oT¶Úä%3œÇ÷÷nÎý?€Azø̇O,`×ýâ5Œ1ZkÁ8çq „”ˆƒ°( ?¿Â  `œ1–+€RšeY–e~@RJRÊ¢A¹š«ªH„ Z™¨’ Œ¶¥¶J{*Ah­hgl¯(ä¶ô‹1ÆÖ³'n­-Ë@H9çœSÆZí8cpÊHRJýîrÎ˲BȲŒRzåÕûì³*µñ      ¦€\»B[c£iš¦i(ËÒo¨3ΖPÚ(:2‰Rc¬ˆ?©ÀÀ)µ eaaðŒê¶[8¾ rI’LÆéò oæù\Ï”ÆØùtEN•JÇ!t»Æ      q”Z ‡€±D0!úV£ñÝnW;ÀSkÔ|§³– Vôzâ8Niä­t b¬Ó@ÌbêM ΘRÖãÚ‚tcÌcó{d`à·ÎèÊ2Ïe       I¢˜Ç$li†`µîÏa‡lú½×x2²§fÿ|g}eê_ùáº4E§¼ê-Æ/®p›ÃpΡþÙ£•`áò…bïß<ŸLĪÔédzñ¯ eÙwXa½³òØ£GŠf1qÉä%7lôØ¢Þè;UÄRx/Ásìá“­£í°i£±pÍõ+& ÃЏᜯ[·Î͹¹¹ž—{—UêÕÂi<Ë»(qÐ̐RzÒ„J©öè뉡¯W,‡:-dË/_~ñôT_ ¶ƒÝÿû±Ê²*t©EÌ7¾ùò'¿°+]ž°Öé\½òÝWsAÕž¨7ÎB€hZø5rÎ9gƒ ëkGk-J@k†¡’Òà”åyîù¬•¾ `#`ý«-`Þ’c”˜¾é=e?3!ÄZëûU+'„x0}X÷¯£¾êú³y‡r†Gþø £ú'pÔ–'ñàèL:ëO´q~Û¶mÛû~í—¯zÇ¥AEPÎþŠ²ŒÓŠgBYMüÞpžuÚñdÜ|¡µcÇŽ·ýÄۏýâ5´2Ä’c©,K¾t÷âg~Òå91Æ;ƒ}E-D Vcj€ÓÏý¯¿ºç¦›nj6›“Ë'WVE…',Qª î99xp?€(Š8çÞý!Ë—“JЖ @’Š$#ÍJºí¶]´&''½Nʲ¬( ïçöíú´/kG©7zlº²¬úù?ýüOþç÷\F_Б™5¶}ª       ÙlN,›hi‰8hlõ…ð H”îÉRBî›”’RÇ€†cŽpJk;*£Tx{7Š„š‹þ‡<Ø0½þñ'¤¿ëDyT€1V9 ^xH]°Ñ•É1g¬¬å<`µ1R¯¼‘RpF†`m#ö!$´UJ§½JÛ³gϽíM„ Ì~ý[·Ür˯üÆmì.m·Nv¬¶ $]/¿v2^-Mi:‡ºs{çËvI9«_\¯¬ªC"VÚg¿úL¾”F–_=¹ü•“”‘…} ùb¯·íرCõäÞ{ö¬½ví™çΔíÒ9„µpÅUkV^¾Iàø±ãލhîˆPÜtÓ


Any suggestions?
CreeAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Frosty555Connect With a Mentor Commented:
Your web browser is properly recognizing the image as a PNG now, but the data it is getting is corrupted.

It's probably all those spaces you have before the opening <?php. Those spaces are getting sent to the browser which is tripping it up.

It is extremely important that the very first bytes of your PHP file are the "<?php", and the very last bytes are the "?>", with no whitespace or newline characters before or after.

Also, making the last line of your script be "exit();" wouldn't hurt.

<?php 
                 
header('Content-Type: image/png');

$string = 'testing';
$im     = imagecreatefrompng("http://192.168.0.117/images/backtoc_manager.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);

exit();
                    
?>

Open in new window

0
 
Frosty555Commented:
It's not junk - that's the PNG data!

The problem is that the browser doesn't realize that the data is a PNG image (as opposed to just html/text, which is what a PHP file normally returns)

You must send the correct MIME headers so that the browser renders the data as a PNG instead of just displaying it as raw text.

See the example here:

http://php.net/manual/en/function.imagepng.php

The appropriate call for the content-type header for a PNG graphic is:

header('Content-Type: image/png');
0
 
CreeAuthor Commented:
I tried that before but this is all i see. page looks like when header is added.
this is my code now


                    <?php 
                 
header('Content-Type: image/png');

$string = 'testing';
$im     = imagecreatefrompng("http://192.168.0.117/images/backtoc_manager.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
                    
                    
                    ?>

Open in new window

In case you wonder if that image doesn't exist...

image from url.
0
 
CreeAuthor Commented:
Thank you .  That did it. The image is showing up with text perfectly now.
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.