没有显示文字,只有验证码线可见

时间:2018-06-19 04:38:50

标签: php

PHP代码:

<?php 
ob_start();
session_start();
$_SESSION['secure'];
header('content-type:image/png');
$text="hello";
$font_size=25;
$width=200;
$height=200;
$image=imagecreate($width, $height);
imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
for($x=1; $x <= 30; $x++) {
    $x1 = rand(1, 100);
    $y1 = rand(1, 100);
    $x2 = rand(1, 100);
    $y2 = rand(1, 100);
    imageline($image, $x1, $y1, $x2, $y2, $black);
}
imagettftext($image, $font_size, 0, 15, 30, $black, 'consolas.ttf', $text);
$imgSrc="out.png";
imagejpeg($image, $imgSrc);
?>

生成图像时,只绘制线条,但不绘制文字(“hello”)。 字体也在同一目录中,我也将它保存在另一个目录中,并添加完整路径没有运气。

1 个答案:

答案 0 :(得分:1)

我正在调试此问题,发现无法访问字体文件。

我已通过打开调试进行检查,如下所示:

error_reporting(E_ALL);
ini_set("display_errors", 1);

并在下面评论了一行。

header('content-type:image/png');


imagepng($image);

收到错误:

  

警告:imagettftext():无法找到/打开字体   第24行/var/www/html/index.php

<强> Soultion:

字体文件的路径应该是服务器上的realpath。所以代码应该是:

imagettftext($image, $font_size, 0, 15, 30, $black, realpath('consolas.ttf'), $text);

同时更改渲染图像而不提供$imgSrc并将其更改为

imagepng($image);

而不是

$imgSrc="out.png";
imagejpeg($image, $imgSrc);

最后完整的代码如下:

ob_start();
session_start();
$_SESSION['secure'];
header('content-type:image/png');
$text = "hello";
$font_size = 25;
$width = 200;
$height = 200;
$image = imagecreate($width, $height);
imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
for ($x = 1; $x <= 30; $x++) {
    $x1 = rand(1, 100);
    $y1 = rand(1, 100);
    $x2 = rand(1, 100);
    $y2 = rand(1, 100);
    imageline($image, $x1, $y1, $x2, $y2, $black);
}
imagettftext($image, $font_size, 0, 15, 30, $black, realpath('Consolas.ttf'), $text);
imagepng($image);