为了账号安全,请及时绑定邮箱和手机立即绑定

图片出现破裂 怎么回事 代码是跟着敲的

http://img1.sycdn.imooc.com//576b5c6c0001fa4814450835.jpghttp://img1.sycdn.imooc.com//576b5c9a0001d3ab11610506.jpg


image.func.php 代码

<?php 

require_once 'string.func.php';

//创建画布

    $width = 80;

$height = 28;

$image = imagecreatetruecolor ( $width, $height );

$white = imagecolorallocate ( $image, 255, 255, 255 );

$black = imagecolorallocate ( $image, 0, 0, 0 );

//用填充矩形填充画布

imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );

$type=1;

$length=4;

$chars = buildRandomString ( $type, $length );

$sess_name="verift";

$_SESSION [$sess_name] = $chars;

$fontfiles = array ("MSYH.TTC", "MSYHL.TTC", "SIMHEI.TTF", "SIMKAI.TTF", "SIMSUN.TTC", );

for($i = 9; $i < $length; $i ++) {

$size = mt_rand ( 14, 18 );

$angle = mt_rand ( - 15, 15 );

$x = 5 + $i * $size;

$y = mt_rand ( 20, 26 );

$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];

$color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );

$text = substr ( $chars, $i, 1 );

imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );

}

header ( "content-type:image/gif" );

imagegif ( $image );

imagedestroy ( $image );


string.func.php  代码

<?php


function buildRandomString($type = 1, $length = 4){

    if ($type == 1) {

        $chars = join("", range(0, 9));

    } elseif ($type == 2) {

        $chars = join("", array_merge(range("a", "z"), range("A", "Z")));

    } elseif ($type == 3) {

        $chars = join("", array_merge(range("a", "z"), range("A", "Z"), range(0, 9)));

    }

    if ($length > strlen($chars)) {

        exit("长度不够");

    }

    $chars = str_shuffle($chars);

    return substr($chars, 0, $length);

}


正在回答

2 回答

不明白你的说的破裂是什么意思,你是指你在前端的img标签那里输出的图片是破裂的吗?如果是这样的话,一你没有封装函数,二你没有调用它,你可以试一下我这个

<?php
/*** 验证码 ***/
require_once'string.func.php';
//通过GD库做验证码
function verifyImage($type=1, $length=4, $pixel=50, $line=0, $sess_name="verify"){
    
    //1. 创建画布
    $width = 80;
    $height = 28;
    $type = 1;
    $length = 4;
    $image = imagecreatetruecolor($width, $height);
    $white = imagecolorallocate($image,255,255,255);
    $black = imagecolorallocate($image,0,0,0);

    //2. 用填充矩形填充画布
    imagefilledrectangle($image, 1, 1, $width-2, $height-2, $white);

    //3. 获取随机验证码
    $chars = buildRandomString($type, $length);

    //4. 保存到session
    $sess_name = "verify";
    $_SESSION[$sess_name] = $chars;

    $fontfiles = array(
                    "CONSTANI.TTF",
                    "simfang.ttf",
                    "simhei.ttf",
                    "simkai.ttf",
                    "simsun.ttc",
                    "FZLTCXHJW.TTF",                
                );
    //5. 生成验证码
    for($i=0; $i<$length; $i++){
        $size = mt_rand(14,18);// 字体大小变化
        $angle = mt_rand(-15,15);// 倾斜角度变化
        $x = 5 + $i * $size;// 位置变化
        $y = mt_rand(20,26);
        // 随机字体
        $fontfile = "../fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];
        // 随机字体颜色
        $color = imagecolorallocate($image, mt_rand(10,90), mt_rand(20,180), mt_rand(30,130));
        $text = substr($chars, $i, 1);// 每次取一个字符
        imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
    }

    //6. 干扰点
    if($pixel){
        for($i=0; $i<$pixel; $i++){
            imagesetpixel($image, mt_rand(0,$width-1), mt_rand(0,$height-1), $black);
        }
    }

    //7. 干扰线
    if($line){
        for($i=0; $i<$line; $i++){
            $color = imagecolorallocate($image, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
            imageline($image, mt_rand(0,$width-1), mt_rand(0,$height-1), mt_rand(0,$width-1), mt_rand(0,$height-1), $color);
        }
    }
    ob_clean();
    //8. 输出到服务端
    header("content-type:image/gif");// 输出图片类型
    imagegif($image);
    imagedestroy($Aimage);// 销毁图片内存
    
}
//verifyImage();


1 回复 有任何疑惑可以回复我~
#1

张洪3347695 提问者

非常感谢! 我试试
2016-06-24 回复 有任何疑惑可以回复我~

我试试   谢啦


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
手把手教你实现电商网站后台开发
  • 参与学习       117284    人
  • 解答问题       1999    个

手把手教你用PHP搭建电子商务平台,由浅入深教你搭建电商系统

进入课程

图片出现破裂 怎么回事 代码是跟着敲的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信