0

我在test.php文件中使用以下代码从文本生成图像。

<?php
error_reporting(E_ALL);

// 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 = '/home/axxxxxxx/public_html/font.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);

?>

然后我尝试test2.php如下显示图像

<?php
echo "<img src=\"/test.php\" />";
?>

我得到的只是默认的损坏图像图标。字体文件和图像 url 的路径是正确的。所有文件权限都在 777。服务器确实有 GD 库。

我可能做错了什么?

4

3 回答 3

1

这是由于缺少字体造成的。请复制test.php目录下的字体文件并修改代码:

$font = '/home/axxxxxxx/public_html/font.ttf';

$font = 'font.ttf';

希望能帮助到你。

于 2013-06-09T12:18:51.880 回答
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);
于 2015-01-23T15:50:33.053 回答
0

找到了答案。正如达纳克建议的那样,我将文件保存为UTF-8 Without BOM使用记事本++。然后只是开始正确显示图像。

于 2013-06-12T14:02:00.440 回答