Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Image can not be displayed because it contains error in php gd

Tags:

php

gd

This is the Link I am following to create an image, however my GD is installed and working correctly as i tested with the very first example but this code breaks and flag "Image can not be displayed because it contains error" .

CODE -

<?php
//phpinfo();

//Report any errors
ini_set("display_errors", "1");
error_reporting(E_ALL); 

//Set the content type
header('content-type: image/png');

//Create our basic image stream 300x300 pixels
$image = imagecreate(300, 300);
//$image = imagecreatetruecolor(300, 300);
//Set up some colors, use a dark gray as the background color
$dark_grey = imagecolorallocate($image, 102, 102, 102);
$white = imagecolorallocate($image, 255, 255, 255);

//Set the path to our true type font 
//$font_path = 'advent_light';
//$font_path = 'advent_light.ttf';
//$font_path = 'arial';
$font_path = 'arial.ttf';

//Set our text string 
$string = 'Swapnesh!';

//Write our text to the existing image.
imagettftext($image, 50, 0, 10, 160, $white, $font_path, $string);

//Create our final image 
imagepng($image);

//Clear up memory 
imagedestroy($image);
?>

Things I tried and googled but with no solution are as follows - :(

  • Checked white/blank spaces before php tag if any.
  • Remove all code and spaces before header() method.
  • Changed imagecreate() to imagecreatetruecolor() as in comments in the code.
  • Checked font_path and set font path as per comments as well.
  • Followed this & this.

My PHP version - PHP Version 5.3.8

Still unable to locate the problem :(

enter image description here

Error

Error

EDITS-

version 1.0

this is what im getting on saving.

enter image description here

More Info about image --

enter image description here

on saving the page -- this is the name of file saving -- create_png.php.png

version 1.1

<br />
<b>Warning</b>:  imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Invalid font filename in <b>C:\xampp\htdocs\Core\CoreFiles\create_png.php</b> on line <b>20</b><br />
<br />
<b>Warning</b>:  imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Invalid font filename in <b>C:\xampp\htdocs\Core\CoreFiles\create_png.php</b> on line <b>23</b><br />

Thanks to @cryptic and @user1711126

Solution --

Font file actually missing, we need to put our .ttf file under the folder to make this code working or set path to make it work.

like image 931
swapnesh Avatar asked Feb 19 '23 01:02

swapnesh


2 Answers

Save the image file that errors and open it in a text editor like notepad or equivalent and see if any PHP errors are inside it. An error is occurring and outputting text then which corrupts the file. Do that and you will find what the error is.

like image 85
cryptic ツ Avatar answered Mar 05 '23 18:03

cryptic ツ


I think @cryptic is right you need to use the real path for font use something like

$font_path = basename(dirname(__FILE__)).'/arial.ttf'; 

and please make sure the font exists in the directory.

like image 22
Abhishek Shaw Avatar answered Mar 05 '23 18:03

Abhishek Shaw