We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

how to solve this error

hatem_from_mesr
on
Medium Priority
553 Views
Last Modified: 2013-12-13
the sent code have these errors

Warning: imagecreatefrompng(button.png) [function.imagecreatefrompng]: failed to open stream: No such file or directory in D:\xampp\htdocs\test\05.php on line 6

Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in D:\xampp\htdocs\test\05.php on line 7

Warning: imagesx(): supplied argument is not a valid Image resource in D:\xampp\htdocs\test\05.php on line 12

Warning: imagesy(): supplied argument is not a valid Image resource in D:\xampp\htdocs\test\05.php on line 13

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in D:\xampp\htdocs\test\05.php on line 16

Warning: imagettftext() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\test\05.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\test\05.php:6) in D:\xampp\htdocs\test\05.php on line 20

Warning: imagepng(): supplied argument is not a valid Image resource in D:\xampp\htdocs\test\05.php on line 21

I think there is something disabled
please help me turn it on
<?php
 if (isset($_GET['message'])) {
   // load font and image, calculate width of text
   $font = 'times';
   $size = 12;
   $im = ImageCreateFromPNG('button.png');
   $tsize = imagettfbbox($size,0,$font,$_GET['message']);
 
   // center
   $dx = abs($tsize[2]-$tsize[0]);
   $dy = abs($tsize[5]-$tsize[3]);
   $x = ( imagesx($im) - $dx ) / 2;
   $y = ( imagesy($im) - $dy ) / 2 + $dy;
 
   // draw text
   $black = ImageColorAllocate($im,0,0,0);
   ImageTTFText($im, $size, 0, $x, $y, $black, $font, $_GET['message']);
 
   // return image
   header('Content-type: image/png');
   ImagePNG($im);
   exit;
 }
?>
<html>
  <head><title>Button Form</title></head>
  <body>
 
    <form action="<?= $PHP_SELF ?>" method="GET">
      Enter message to appear on button:
      <input type="text" name="message" /><br />
      <input type="submit" value="Create Button" />
    </form>
 
  </body>
</html>

Open in new window

Comment
Watch Question

Most Valuable Expert 2011
Author of the Year 2014

Commented:
Run this script and look to see if you have GD enabled.
<?php phpinfo(); ?>

Open in new window

Most Valuable Expert 2011
Author of the Year 2014

Commented:
Then go look at your directories and find out why this button.png file is missing.  You may be looking at the wrong directory.  You can print out the contents of getcwd() to see what directory your script is looking in.

Not sure, but I think all the other errors are downstream issues caused by the failure of this command:
ImageCreateFromPNG('button.png');

HTH, ~Ray
The button.png needs to be located in a place where the server is reading.  Typically this is passed in with a full path to the file not just a file name.

If you are trying to create it from scratch you can do the following to make that happen:

You need to make sure that the image has a valid resource before continuing.  If not you will get the above warnings that you see.
<?php
if( isset($_GET['message']) ) {
    // load font and image, calculate width of text
    $font = 'times';
    $size = 12;
    $im = ImageCreateFromPNG('button.png');
    if(!$im) {
        /* Create a blank image */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);
 
        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
    }
    $tsize = imagettfbbox($size,0,$font,$_GET['message']);
 
    // center
    $dx = abs($tsize[2]-$tsize[0]);
    $dy = abs($tsize[5]-$tsize[3]);
    $x = ( imagesx($im) - $dx ) / 2;
    $y = ( imagesy($im) - $dy ) / 2 + $dy;
 
    // draw text
    $black = ImageColorAllocate($im,0,0,0);
    ImageTTFText($im, $size, 0, $x, $y, $black, $font, $_GET['message']);
 
    // return image
    header('Content-type: image/png');
    ImagePNG($im);
    exit;
}
?>

Open in new window

Author

Commented:
Ray_Paseur,
>>>Run this script and look to see if you have GD enabled.
it's enabled

Author

Commented:
when I put the button.png file
there is those errors

Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in D:\xampp\htdocs\test\05.php on line 7

Warning: imagettftext() [function.imagettftext]: Invalid font filename in D:\xampp\htdocs\test\05.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\test\05.php:7) in D:\xampp\htdocs\test\05.php on line 20
0PNG  IHDR_Æâô`¬IDATX&J8± ¬ Q0.&¾®`iD<X©¯O¢×Bq¯"T?B¹6‘ôc=Á4¬N M.6¸{_çÆaH²JG[{vÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuÆuH÷êS"b PM &û ¼w(/T8|;IEND®B`
Most Valuable Expert 2011
Author of the Year 2014

Commented:
So the warning indicates that there is something wrong with the contents of $_GET["message"] - it is not a font filename, apparently.
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Most Valuable Expert 2011
Author of the Year 2014

Commented:
Man page here.  Font file name can be URL.
http://us2.php.net/manual/en/function.imagettfbbox.php
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.