开发者

imagettftext cannot open font file

开发者 https://www.devze.com 2023-03-07 11:07 出处:网络
Using the example from php.net I get a warning, and the image is not rendered correctly. I supply a full path to the .ttf file like so: /var/www/public/myfont.ttf

Using the example from php.net I get a warning, and the image is not rendered correctly. I supply a full path to the .ttf file like so: /var/www/public/myfont.ttf

PHP Warning:  imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Could not find/open font in <phpfile>

I am using a custom .ttf font found here. I can open the file fine in Ubuntu as a valid font file. I also attempted other fonts, with the same result.

I am using Ubuntu 10.04 LTS 32 bit, with apache2, php5, freetype6 and php5-gd installed. I also attempted to chmod 777 file and folder with ttf file, with the same result.

How can I get the example working using a custom ttf font file?

*Edit: The code I'm using:

<?php
// File is: /var/www/public/test.php
// Apart from $font variable, it's copy-pasted from php.net

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

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);开发者_Python百科
$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 = '/var/www/public/UnmaskedBB.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

Output from phpinfo();

[gd]
GD Support  enabled
GD Version  2.0
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.3.11
T1Lib Support   enabled
GIF Read Support    enabled
GIF Create Support  enabled
JPEG Support    enabled
libJPEG Version     6b
PNG Support     enabled
libPNG Version  1.2.42
WBMP Support    enabled 

Testing is_file and is_readable:

$font = realpath('./').'/UnmaskedBB.ttf';
echo "Font: ".$font; // /var/www/public/UnmaskedBB.ttf
echo "Is file? ".is_file($font); // 1
echo "Is readable? ".is_readable($font); // 1


You could try to insert:

putenv('GDFONTPATH=' . realpath('.'));

in front of the first imagettftext, just to make sure it is no path issue.

UPDATE

In case you are using font caches like fc-cache, don't forget to refresh it, e.g.:

sudo fc-cache -f -v


Try moving the ttf file in the same dir as your php file and change $font to

$font = 'UnmaskedBB.ttf';


Upgrading distro, including all php packages solved the issue


https://www.php.net/manual/en/function.imagettftext.php

Note: This function is only available if PHP is compiled with freetype support (--with-freetype-dir=DIR)

sudo apt-get install freetype*

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号