学习PHP图像处理(验证码)

来源:互联网 发布:java堆栈哪个大 编辑:程序博客网 时间:2024/05/21 16:57

今天来学习下验证码是怎样搞的,来学习下面得代码

<?php

session_start(); //启动Session会话
header("content-type:image/png");    //设置创建图像的格式
$image_width=70;                      //设置图像宽度
$image_height=18;              //设置图像高度


$new_number=$_GET[num];
$num_image=imagecreate($image_width,$image_height);  //创建一个画布
imagecolorallocate($num_image,255,255,255);     //设置画布的颜色


for($i=0;$i<strlen($new_number);$i++){  //循环读取SESSION变量中的验证码
   $font=mt_rand(3,5);                             //设置随机的字体
   $x=mt_rand(1,8)+$image_width*$i/4;               //设置随机字符所在位置的X坐标
   $y=mt_rand(1,$image_height/4);                   //设置随机字符所在位置的Y坐标
   $color=imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));  //设置字符的颜色
   imagestring($num_image,$font,$x,$y,$new_number[$i],$color);    //水平输出字符
}


imagepng($num_image);       //生成PNG格式的图像
imagedestroy($num_image);   //释放图像资源

?>

PHP操作图形可以通过GD2库函数来实现.

第一步:创建画布

在GD2库函数中创建画布应用Imagecreate()函数.

$num_image=imagecreate($image_width,$image_height);  //用imagecreate创建一个宽70像素,高18像素的画布.

第二步:设置画布颜色

imagecolorallocate($num_image,255,255,255);      //设置画布颜色RGB值为:255,255,255

第三步:书写字体

PHP中的GD库可以绘制英文字符串,也可以绘制中文汉字.绘制英文字符串应用imagestring()函数.

imagestring(resource image,int font,int x,int y,string s,int col)

imagestring()函数用col颜色将字符串s绘制到image所代表的图像的(x,y)坐标处(这是字体串左上角的坐标,整幅图像的左上角为(0,0).如果font是1,2,3,4或5,则使用内置字体).

第四步:输出图像

imagepng($num_image);       //生成PNG格式的图像

第五步:销毁图像

imagedestroy($num_image);   //释放图像资源

0 0