imagettftext无法正常工作

时间:2011-08-11 23:33:58

标签: php debian text gd

我试图在图像中编写文本仅用于测试目的,因为我的Zabbix安装不会在图形中写入文本。我已经从php.net网站(http://php.net/manual/en/function.imagettftext.php

复制了代码
<?php
// 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);
$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 = '/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.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);
?>

有没有人有想法?

3 个答案:

答案 0 :(得分:3)

我已经弄明白这里有什么问题了。访问truetype文件的权限。 PHP无法访问该文件,因此无法写入。

我没有看到问题因为我没有使用E_ALL运行。现在一切都很顺利

答案 1 :(得分:1)

我的问题是错误的偏移。图像没有显示任何内容,没有文本,源代码中没有错误,只是一个空白文件。路径是正确的。我认为ttf字体有错误,但结果却是错误的定位。

这是帮助我看到一些文字的原因:

imagettftext($im, 20, 0, 20, 20, $fg, $font, $text);

这会在右上角显示一些文字。

完整的工作代码:

    putenv('GDFONTPATH=' . dirname(__FILE__));
    $font = 'arial'; // located next to the script
    imagettftext($im, 20, 0, 20, 20, $fg, $font, $text);

答案 2 :(得分:0)

这是一个GD功能,你需要安装php-gd和gettext&amp; ttf支持。

- $