PHP - imagettftext not working and GD installed
Solution 1
Had the same problem, with FreeType installed, solution was
$font = "./Arial.ttf"; // <--- put ./ in front of filename
Solution 2
Notice you don't have Free Type installed:
["FreeType Support"]=>
bool(false)
This function requires both the GD library and the » FreeType library.
You will need to install Free Type library before you can use this function.
try installing these package:s freetype, freetype-devel
If you compiled PHP you can make sure you added enabled freetype during compile time:
--with-freetype-dir=/usr/include/freetype2/ --with-freetype
Or if you using something such as YUM or APT-GET it should be really simple to install those libraries, and a quick search ob google with get you started.
Solution 3
Well i also got problem around
$font='arial.tff';
I think you should provide absolute path to the $font like
$font="c:/windows/fonts/arial.ttf";
i assume you are a windows user. and remove
header('Content-Type:image/png');
to get the real error
Solution 4
I solved this problem with this solution:
$fontfile= __DIR__.'/Fontname.ttf';
Admin
Updated on July 15, 2022Comments
-
Admin almost 2 years
It's being long hours that I'm still looking for answer to this problem.. All the solutions I find are around catching the font name but I am pretty sure this isn't my problem.
It looks like GD is installed
array(11) { ["GD Version"]=> string(27) "bundled (**2.0.34 compatible**)" ["FreeType Support"]=> bool(false) ["T1Lib Support"]=> bool(false) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPEG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XPM Support"]=> bool(true) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }
Above you can see my GD support. My PHP version is 5.3 and I'm running on Linux.
I have tried few different code examples from different websites and none works. ImageString does work for me but I need to get imagettftext to work..
This is the last code I have tried now-
<?php ini_set('display_errors', 1); error_reporting(E_ALL); // Set the content-type header('Content-Type: image/png'); // Create the image $im = imagecreatetruecolor(400, 100) or die("Can't create image!"); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); // The text to draw $text = 'Testing'; // Replace path by your own font path $font = 'arial.ttf'; // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, 'arial.ttf', $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, 'arial.ttf', $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); ?>
-
dregad about 7 yearsRequirement for Freetype support is documented in PHP manual, see php.net/manual/en/function.imagettftext.php and php.net/manual/en/function.imagettfbbox.php
-
p01ymath almost 7 yearsWorked for me! Lol! Can you please explain in detail why this works?
-
michi almost 7 yearssorry, I have no idea of why this is so!
-
Damiani about 5 yearsadding local path might not be a perfect solution maybe use getcwd() + file name.
-
Veshraj Joshi about 5 years@Damiani you are absolutely correct, but this path is for the font installed in OS, I will update the answer. Thanks for valuable suggestion
-
Daniel Resch about 4 yearsworked! - but really weird, would also like to know why this is happening?
-
ESP32 almost 4 yearsI even had to add realpath('./Arial.ttf')
-
Kamlesh over 3 yearsdefined('ROOT_PATH') || define('ROOT_PATH', realpath(dirname(FILE) . '')); $font_path = ROOT_PATH.'/fonts/arial-italic.ttf';