//header("Content-Type:image/jpeg;charset:utf-8");
$width=120;
$height=40;
$image=imagecreate($width, $height);
$color_px=imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
$fontfile="F:\zendstudio workspaces\dome_1\font\SketchyComic.ttf";
var_dump($fontfile) ;
imagettftext($image, 14, 0, 0, 40, $color_px, $fontfile, "ABCD");
这个代码报错去掉header后,看到:string(52) "F:\zendstudio workspaces\dome_1\font\SketchyComic.ttf" Warning: imagettftext(): Could not find/open font in F:\zendstudio workspaces\dome_1\inc\vcode1.php on line 20 我的vocode1.php放在inc文件夹,字体放在font文件夹,他俩的文件夹在同一文件夹demo1这个imagettftext(),只在该php文件inc文件夹下,搜索字体文件。不论是相对路径,还是绝对路径,我都设置到font文件夹,应为字体毕竟是在font文件夹下,但是imagettftext()这货,就只在php文件inc文件夹下搜索字体。我把字体从font文件夹拉入“vcode1.php”所在的inc文件夹,用绝对路径。就可以了。但是为什么不能把字体放另一个文件夹?这样怎么弄?

解决方案 »

  1.   

    vocode1.php试一下不要绝对路径,直接../font/SketchyComic.ttf看看还有没有这个问题
      

  2.   

    linux上的话除了指定的字体文件地址错误没有遇到过这类情况,那边可能跟win的目录命名方面规范有关
      

  3.   


    依然报错Warning: imagettftext(): Could not find/open font in F:\zendstudio_workspaces\demo_1\inc\vcode1.php on line 20
      

  4.   

    哈哈哈哈 笑死我了,MMP!!!!就是狗币bug!狗币bug!狗币bug!狗币bug!狗币bug!$fontfile=realpath("../font/SketchyComic.ttf");var_dump($fontfile) ; 就是: "F:\zendstudio_workspaces\demo_1\font\SketchyComic.ttf"     不报错,可用!直接手打一模一样的地址,$fontfile="F:\zendstudio_workspaces\demo_1\font\SketchyComic.ttf"   就报错,不可用!!!然后我实在无奈了,我吧手打的地址赋值给变量这句,也 var_dump 一下,然后惊天发现!!!!!手打地址:"F:\zendstudio_workspaces\demo_1\font\SketchyComic.ttf" 
    竟然变成:"F:\zendstudio_workspaces\demo_1ont\SketchyComic.ttf"   了仔细一看,$fontfile输出出来,竟然少了个“ \f ” $变量=“字符串”,这种最简单的赋值运算,输出$变量,竟然不等于“字符串”!!!!一个简简单单的赋值语句,竟然改变了字符串!!!!出了最莫名其妙的错误!!!我怕是字符串里的某些单词,触发了一些什么东西。想起单引号 不会改变字符串里的变量这一说,果断把字符串地址两边的双引号,改成单引号,赋值就不变了!!!我怀疑应该是bug,估计是我的地址里的某些话,触发了一些函数或者什么的。用单引号,赋值就不出错了。
      

  5.   

    is crazy...