我已经编写了一段代码,用PHP在PHP中生成文本图像。当我在我的XAMPP localhost上运行此代码时,我没有得到任何错误,但我也没有得到图像。
Generate.php
<?php
session_start() ;
header ('Content-type: image/jpeg') ;
$_SESSION['secure'] = rand(1000,9999) ;
$text=$_SESSION['secure'] ;
$font_size=30 ;
$img_height=40 ;
$img_width=100 ;
$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,'captchafont.ttf',$text) ;
imagejpeg($image) ;
?>
HTML
<img src="generate.php"/>
当我在本地主机上运行此HTML文件时,我得到的是浏览器中找不到图像的符号。我希望你们检查我的代码是否有任何错误。提前谢谢。
答案 0 :(得分:2)
您应该更改此行:
$image=imagecreate($image_width,$image_height) ;
到
$image=imagecreate($img_width,$img_height) ;
因为您定义了$img_width
和$img_height
个变量而不是$image_width
和$image_height
您还应确保captchafont.ttf
存在于正确的路径中并以正确的方式使用。来自手册:
取决于PHP使用的GD库版本,何时使用 fontfile不以一个前导开头,然后会附加.ttf 文件名和库将尝试搜索该文件名 沿着库定义的字体路径。
小测试建议
评论/删除行header ('Content-type: image/jpeg') ;
并在浏览器中简单运行此网址,例如http://localhost/generate.php
,以确保不会显示任何错误。否则,如果仍未在文件开头添加error_reporting(E_ALL)
。删除所有错误和警告后,您当然应删除此行并取消注释header
行,然后检查图像是否正确显示。