PHP5中图片中文验证码(下)
程序员文章站
2022-03-04 13:06:39
...
1、image与header输出的介绍
PHP的HEADER是定义头的动作,新PHP5中支持三种类型
Content-Type: xxxx/yyyy //内容文件类型
Location: xxxx:yyyy/zzzz
Status: nnn xxxxxx
内容文件的类型
如: image/gif
image/jpeg
image/png
header(*)
不同的head设置,定义输出不同的图片格式,在GD库中都有对应的image类型
imagejpeg(*) imagegif(*) imagepng(*) ……
2、imageline 与 imagesetpixel 函数
imageline 画线函数
imageline ( resource image, int x1, int y1, int x2, int y2, int color )
image:图片对象
x1,y1:线的起始坐标
x2,y2:线的结束坐标
color:颜色
imagesetpixel 画点函数
imagesetpixel ( resource image, int x, int y, int color )
image:图片
x,y:点的坐标
color:点的颜色
3、imagettftext函数调用字体写入文字
imagettftext 带字体的写入函数
imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
image:图片
size:字体大小
angel:倾斜度,围绕x轴旋转
x,y,开始位置
color:颜色
fontfile:字体文件目录
text:显示的内容
4、PHP验证码插入中文的方法
iconv("gb2312","UTF-8","新年快乐!"); //首先要将文字转换成UTF8格式
然后使用imagettftext 调用一种字体,再将转换好的UTF8格式的中文
写入图片中!
<?Php
//开启session
session_start();
for($i=0;$i<4;$i++){
$rand.=dechex(rand(1,15);
}
//把验证码存入session的pic变量中
$_SESSION[pic]=$rand;
//创建一个100*30的图片
$im=imagecreatetruecolor(100,30);
//设置颜色
$bg=imagecolorallocate($im,0,0,0);//第一次用调色板的时候,是背景颜色
//文字颜色
$tc=imagecolorallocate($im,255,255,255);
//画线条
for($i=0;$<3;$i++){
$tc=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,80),rand(0,20),rand(0,80),rand(0,20),$tc);
}
//噪点
for($i=0;i<300;i++){
imagesetpixel($im,rand(0,100),rand(3,30),$tc);
}
$str=iconv("gb2312","UTF-8","新年快乐!"); //首先要将文字转换成UTF8格式
//写入中文
//载入字体,把字体copy到项目中(根目录下)
imagettftext ($im,12,0,20,20,$tc,'simhe1.ttr',$str);
//写入英文
//把字符串写在图像
//imagestring($im,rand(1,6),0,0,$rand,$tc)
//输出图片
header("Content-type:image/jpge"): 注意一致性
imagejpeg($im);
?>