图片验证码文件,加减法计算方式

/**
 * 图片验证码文件,加减法计算方式
 */
class ImageCode {
    private $jiashu = 0;//加数或者减数
    private $jianshu = 0;//被加数或者被减数
    private $yunsuan = '';//运算符
    private $deshu = 0;//得数
    private $string = '';//字符串样式
    private $img;   //图片对象
    private $width = 100;//图片宽度
    private $height = 50;//图片高度
    private $ttf = 'arial.ttf'; //字体文件
    private $session = 'code';//session 变量

    private function jiashu() {
        //header('Content-type:image/png');
        header("Content-type:image/JPEG");
        $this->jiashu = rand(1,10);
        $this->jianshu = rand(1,10);
        $this->yunsuan = $this->jiashu > $this->jianshu ? '-':'+';
        $this->deshu = $this->jiashu > $this->jianshu ? $this->jiashu - $this->jianshu:$this->jiashu + $this->jianshu;
    }
    public function show($w = 100,$h=50,$t='arial.ttf',$code='code') {
        $this->jiashu();
        $this->string = $this->jiashu.$this->yunsuan.$this->jianshu.'=?';
        $this->width =$w;
        $this->height = $h;
        $this->ttf = $t;
        $this->session = $code;
        session_start();
        $_SESSION[$this->session] = $this->deshu;
        $this->images();
    }

    private function images() {
        $this->img = imagecreate($this->width, $this->height);
        $background_color = imagecolorallocate($this->img, 255, 255, 255);
        imagecolortransparent($this->img,$background_color);
        imagettftext($this->img,14,0,1,20,imagecolorallocate($this->img, 0, 0, 0),$this->ttf,$this->string);
        $this->echoImages();
    }

    private function echoImages() {
        imagepng($this->img);//以PNG格式将图像输出到浏览器
        imagedestroy($this->img);//销毁图像
    }
}
$ImageCode = new ImageCode;
$ImageCode->show(130,35,'arial.ttf','code');

posted @ 2016-07-01 11:38  青柠檬lily  阅读(2483)  评论(0编辑  收藏  举报