没有错误发生但没有显示gd图像

时间:2014-07-15 13:41:56

标签: php gd captcha

我已经编写了一段代码,用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文件时,我得到的是浏览器中找不到图像的符号。我希望你们检查我的代码是否有任何错误。提前谢谢。

1 个答案:

答案 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行,然后检查图像是否正确显示。