$im = imagecreate($textw,$texth);图像的大小设置错误,,$textw,$texth 得到的值不是合法的值 。。你在这里输出调试一下,就能找到问题,,要么是图像长宽的算法错误,或是字体文件地址有错

解决方案 »

  1.   

    打印这个两个变量的值 看看,应该是这两个变量的值 有问题。
    $textw,$texth
      

  2.   

    $onesize 信息
    Array ( [0] => 142807144 [1] => -1073756800 [2] => -1073755944 [3] => 1080115684 [4] => 1080115684 [5] => 142180604 [6] => 141666300 [7] => 1079710509 )
      

  3.   

    字体是windows/fonts/目录下的文件主机是redhat
      

  4.   

    $onesize = ImageTTFBBox($fontsize, 0, $file, 'W');
    print_r($onesize);

    Array
    (
        [0] => -1
        [1] => -1
        [2] => 18
        [3] => -1
        [4] => 18
        [5] => -16
        [6] => -1
        [7] => -16
    )
    1、请检查你的字库是否完好
    2、按你给出的数据,$textw=($onesize[2] - $onesize[0]) * $length;为负数
      

  5.   

    文件存在
    Array ( [0] => 142561448 [1] => -1073756800 [2] => -1073755944 [3] => 1080115684 [4] => 1080115684 [5] => 142747572 [6] => 141687980 [7] => 1079710509 ) 
    -1216317392
    -3648952176
    -2153467301
    代码:
    session_start();
    $fontsize=15;            //字体大小调节
    $length=3;             //随机码长度
    $activetime=1;         //随机码实效(按分钟为单位)
    if(time() -1< $_SESSION['lastime'] - $activetime * 60) exit;//预防DDOS攻击
    $file="./images/arial.ttf";//字体文件地址
    if (file_exists($file))
    echo "文件存在";
    $_SESSION['authnum'] = random($length);
    //确定图像大小
    $onesize = ImageTTFBBox($fontsize, 0, $file, 'W');
    print_r($onesize);
    $onew= ($onesize[2] - $onesize[0]);
    $textw=($onesize[2] - $onesize[0]) * $length;
    $texth=($onesize[1] - $onesize[7]) + 8;
    echo $onew.'<br>'.$textw.'<br>'.$texth;
    exit;
      

  6.   

    字体是winnt/font 目录下的,不知道会不会是这个问题