使用 GD 库进行验证码,图像未显示

Posted

技术标签:

【中文标题】使用 GD 库进行验证码,图像未显示【英文标题】:Using GD library for captcha, image is not shown 【发布时间】:2018-10-06 09:29:27 【问题描述】:

我正在使用 GD 库来生成验证码图像。但是图像没有显示出来。你能帮我吗? 这是转换为验证码图像的文本 index.php

<?php
session_start();
$_SESSION['secure']=rand(1000,9999);
?>

<img src="generate.php" />

生成.php

<?php 
session_start();
header('Content-type: image/jpeg');
$text = $_SESSION['secure'];
$font_size=30;

$image_width=200;
$image_height=40;

$image = imagecreate($image_width,$image_height );
imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);

imagettftext($image, $font_size, 0, 15, 30, $text_color, 'font.ttf', $text);
imagejpeg($image);

?>

以上是我试图用来生成验证码图像的两个文件。但是图像没有显示出来。我的 GD 库已启用,我已对其进行了检查。任何帮助将不胜感激。

【问题讨论】:

Convert GD output to base64的可能重复 font.ttf 存在吗?尝试删除 header('Content-type: image/jpeg'); 语句并使用浏览器导航到 generate.php,它应该可以帮助您找出问题所在。 font.ttf 在同一个文件夹中 有人请回答我严重卡住了 【参考方案1】:

From documentation

根据 PHP 使用的 GD 库版本,当字体文件不以前导 / 开头时,.ttf 将附加到文件名,并且库将尝试沿着库定义的字体路径搜索该文件名.

所以尝试一下:

$font = "/path_to_folder/font.ttf";

imagettftext($image, $font_size, 0, 15, 30, $text_color, $font, $text);

这对我有用。

【讨论】:

以上是关于使用 GD 库进行验证码,图像未显示的主要内容,如果未能解决你的问题,请参考以下文章

php基础之gd图像生成缩放logo水印和简单验证码实现

GD库的基本信息,图像的旋转水印缩略图验证码,以及图像类的封装

安装GD库解决ThinkPHP 验证码Call to undefined function Thinkimagecreate()出错

织梦安装相关问题总汇

PHP 将 GD 图像转换为用于验证码的 CSS 代码

php基础 gd图像生成缩放logo水印和验证码