在php中,生成中文图片格式的验证码,步骤如下:
1、image与header输出的介绍
2、imageline 与 imagesetpixel 函数 这是验证码中的噪点
3、imagettftext函数调用字体写入文字
4、php验证码插入中文的方法
参考之前的php 中文验证码的实现方法,实现了如下的中文图片验证码的雏形:
复制代码 代码示例:
<?php
//中文图片验证码
session_start();
for($i=0;$i<4;$i++){
$rand.=dechex(rand(1,15));
}
$_SESSION[check_pic]=$rand;
$im=imagecreatetruecolor(100,30);
//设置颜色
$bg = imagecolorallocate($im,0,0,0);//第一次用时的背景颜色
$te = imagecolorallocate($im,255,255,255);//后面用的颜色
//划线条
for($i=0;$i<3;$i++);{
$te2 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,100),0,100,30,$te2);
}
//把字符串写在图像左上角
imagestring($im,rand(3,6),rand(1,70),rand(1,10),$rand,$te);
//输出图像
header("Content-type: image/jpeg");
imagejpeg($im);
?>
修改后的最终版本:
复制代码 代码示例:
<?php
//中文图片验证码
session_start();
for($i=0;$i<4;$i++){
$rand.=dechex(rand(1,15));
}
$_SESSION[check_pic]=$rand;
$im=imagecreatetruecolor(100,30);
//设置颜色
$bg = imagecolorallocate($im,0,0,0);//第一次用时的背景颜色
$te = imagecolorallocate($im,255,255,255);//后面用的颜色
//划线条
for($i=0;$i<3;$i++){
$te2 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imageline($im,rand(0,100),0,100,30,$te2);
} // www.jb200.com
//点
for($i=0;$i<200;$i++){
imagesetpixel($im,rand()%100,rand()%30,$te2);
}
//转换为utf8,确定要绘制的中午文字
$str =
iconv("GBK","UTF-8","新年快乐");
//载入字体
imagettftext($im,12,9,20,20,$te,'FZSTK.TTF',$str);
//把字符串写在图像左上角
//imagestring($im,rand(1,6),rand(3,70),rand(0,16),$rand,$te);
//输出图像
header("Content-type: image/jpeg");
imagejpeg($im);
?>
当然,这只是我的习作而已,更多php验证码的例子,大家可以参考
php 验证码类以及
php 图片验证码中的实现方法。
看看高手们是如何实现php验证码的。
脚本小编祝大家学习进步。