André Oliveira
André Oliveira

Reputation: 1123

PHP GD Library write text to image

Hello following this answer, i'm trying to add a text to a image using GD Library, sadly i'm unable to do it, this is my code:

<?php
  //Set the Content Type
  header('Content-type: image/jpeg');


  // Create Image From Existing File
  $jpg_image = imagecreatefromjpeg('serra.jpg');

  // Allocate A Color For The Text
  $white = imagecolorallocate($jpg_image, 255, 255, 255);

  // Set Path to Font File
  $font_path = 'denmark.ttf';

  // Set Text to Be Printed On Image
  $text = "This is a sunset!";

  // Print Text On Image
  imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);

  // Send Image to Browser
  imagejpeg($jpg_image);

  // Clear Memory
  imagedestroy($jpg_image);
?> 

This code will Output the image without the text in it.

The serra.jpg and denmark.ttf files are both in the same folder as the script.

Running the gd_info() function on my server i got the following:

GDINFO

Any ideas on what could possible be going on?

Upvotes: 1

Views: 2543

Answers (4)

user547632
user547632

Reputation: 51

$font_path = 'denmark.ttf';

Should be

$font_path = 'denmark';   //no need to incluce .ttf when not using backward slash.

Upvotes: 0

Andr&#233; Oliveira
Andr&#233; Oliveira

Reputation: 1123

I was having some weird problem with the $font_path.

So reading the http://php.net/manual/en/function.imagettftext.php

I saw that i have to add putenv... before the $font_path variable like this:

  putenv('GDFONTPATH=' . realpath('.'));
  $font_path = 'denmark.ttf';

Now is working fine.

Also i tested the solution presented by Roman, and by just changing the font_path to:

$font_path = './denmark.ttf';

The script worked fine!

Thanks for the help guys!

Upvotes: 0

Vasim Shaikh
Vasim Shaikh

Reputation: 4512

Get a solution,Check this code.

imagejpeg($jpg_image,'newimage.jpeg');

You are not save your image.

<?php
  //Set the Content Type
  header('Content-type: image/jpeg');


  // Create Image From Existing File
  $source="mk.jpg";
  $jpg_image = imagecreatefromjpeg($source);

  // Allocate A Color For The Text
  $white = imagecolorallocate($jpg_image, 255, 255, 255);

  // Set Path to Font File
  $font_path = 'ASMAN.ttf';

  // Set Text to Be Printed On Image
  $text = "This is a sunset!";

  // Print Text On Image
  imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);

  // Send Image to Browser
  imagejpeg($jpg_image,'newimage.jpeg');

  // Clear Memory
  imagedestroy($jpg_image);
?>

Upvotes: 0

RomanPerekhrest
RomanPerekhrest

Reputation: 92854

Go through the following steps:

  • if you are working in Unix-based OS check permissions for 'denmark.ttf' file. Make sure that it accessible by your php script
  • change font path as follows: $font_path = './denmark.ttf';

Upvotes: 1

Related Questions