图像处理_01_验证码

一 数字验证码

<?php
session_start();//设置session,必须处于脚本最顶部
header('Content-Type: image/png');//设置头部,image/png

//1 创建一个真彩色图片
$image = imagecreatetruecolor(100, 30);

//2 填充背景色
imagefill($image, 0, 0, imagecolorallocate($image,255,255,255));//#ffffff

//3 给图片加一个边框
imagerectangle($image,0,0,99,29,imagecolorallocate($image,rand(20,100),rand(20,100),rand(20,100)));

//4 设置干扰雪花点
for($i=0;$i<200;$i++){
    $pixelColor = imagecolorallocate($image,rand(100,200), rand(100,200), rand(100,200));//设置点的颜色
    imagesetpixel($image, rand(1,99), rand(1,29), $pixelColor);//画一个单一像素
}

//5 增加干扰线段
for($i=0;$i<4;$i++){
    $lineColor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));//设置线的颜色
    imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$lineColor);//设置线,两点一线
}

//7>生成随机数字
$captcha_code = "";//定义变量保存数字值
for($i=0;$i<4;$i++){
    $fontSize = 6;//设置字体大小
    $fontColor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //设置字体颜色,0-120深颜色
    $fontContent = rand(0,9);//设置数字
    $captcha_code .= $fontContent;//.=连续定义变量
    $x = ($i*100/4)+rand(5,10);//设置x坐标
    $y = rand(5,10);//设置y坐标
    imagestring($image,$fontSize,$x,$y,$fontContent,$fontColor);
}

$_SESSION['authcode'] = $captcha_code;//8 存到session

imagepng($image);//9 输出png图像

imagedestroy($image);//10 结束图形函数 销毁$image

二  字母加数字验证码

<?php
session_start();//设置session,必须处于脚本最顶部
header('Content-Type: image/png');//设置头部,image/png

//1 创建一个真彩色图片
$image = imagecreatetruecolor(100, 30);

//2 填充背景色
imagefill($image, 0, 0, imagecolorallocate($image,255,255,255));//#ffffff

//3 给图片加一个边框
imagerectangle($image,0,0,99,29,imagecolorallocate($image,rand(20,100),rand(20,100),rand(20,100)));

//4 设置干扰雪花点
for($i=0;$i<200;$i++){
    $pixelColor = imagecolorallocate($image,rand(100,200), rand(100,200), rand(100,200));//设置点的颜色
    imagesetpixel($image, rand(1,99), rand(1,29), $pixelColor);//画一个单一像素
}

//5 增加干扰线段
for($i=0;$i<4;$i++){
    $lineColor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));//设置线的颜色
    imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$lineColor);//设置线,两点一线
}

//7>生成随机数字
$captcha_code = "";//定义变量保存数字值
for($i=0;$i<4;$i++){
    $fontSize = 6;//设置字体大小
    $fontColor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120)); //设置字体颜色,0-120深颜色

    $element = 'abcdefghigkmnpqrstuvwxy23456789';//设置验证码里面的
    $fontContent = substr($element,rand(0,strlen($element)),1);//设置数字

    $captcha_code .= $fontContent;//.=连续定义变量
    $x = ($i*100/4)+rand(5,10);//设置x坐标
    $y = rand(5,10);//设置y坐标
    imagestring($image,$fontSize,$x,$y,$fontContent,$fontColor);
}

$_SESSION['authcode'] = $captcha_code;//8 存到session

imagepng($image);//9 输出png图像

imagedestroy($image);//10 结束图形函数 销毁$image

 拼接元素

$element=array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$string='';
for ($i=0;$i<5;$i++){
    $string.=$element[rand(0,count($element)-1)];
}

 

遗留问题:这个函数老是输出失败

imagettftext($img,14,rand(-5,5),rand(5,15),rand(30,35),$colorString,'font/SketchyComic.ttf',$string);  //用 TrueType 字体向图像写入文本

posted @ 2020-11-08 20:07  棉花糖88  阅读(112)  评论(0编辑  收藏  举报