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”)。 字体也在同一目录中,我也将它保存在另一个目录中,并添加完整路径没有运气。
答案 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);