生成验证码比较简单,画图也不难,不过大家都不喜欢读手册,也不喜欢自己动手,一般是网上抄一段代码了事,我一直如此,偶尔画图,其实发现画图挺有趣。
不过拿普通字体生成的验证码,是没有一点“战斗力”的,很轻易的就会验证码识别程序识别内容,然后轻易被灌水,要生成好的验证码图片不是简单的事情,有些大公司专门一个部门去做这么一件事情,不过我这里只是了解演示,一般用途应该就够用了吧,呵呵。
下面两个函数,一个能够画出中文内容,另外一个能够画出英文内容,按照需要使用。
/**
*生成中文字符,
*
*必须有GD库、iconv或者mbstring库、相应的字体文件
*/
functionmakeChineseCharPic($str='中文字符'){
//转码
if(function_exists('iconv')){
$str=iconv('gbk','utf-8',$str);
}elseif(function_exists('mb_convert_encoding')){
$str=mb_convert_encoding($str,'utf-8','gbk');
}else{
exit("Noticonvcharset");
}
//产生图片
$im=imageCreate(80,30);
//背景色
$bkg=imageColorAllocate($im,0,255,255);
//字体色
$clr=imageColorAllocate($im,0,128,255);
//字体文件路径
$font="c:/windows/fonts/simhei.ttf";
//使用字体来画TTF内容
imageTTFText($im,13,0,5,20,$clr,$font,$str);
//--------------------------------------------------
//黑体:simhei.ttf,宋体:simsun.ttc,隶书:simli.ttf,楷体:simkai.ttf,幼圆:simyou.ttf
//华文行楷:stxingka.ttf,华文新魏:stxinwei.ttf,华文彩云:stcaiyun.ttf,华文仿宋:stfangso.ttf
//方正姚体:fzytk,方正舒体:fzstk.ttf
//--------------------------------------------------
//输出后清除资源
header("Content-type:image/png");
imagePng($im);
imageDestroy($im);
}
/**
*画英文字符(必须有GB库)
*/
functionmakeEnglishCharPic($str='ABCD12'){
//生成图片
$im=imageCreateTrueColor(65,20);
//背景色
$bg=imageColorAlLocate($im,0,0,0);
//字体色
$textColor=imageColorAlLocate($im,0,255,255);
//画图
imageString($im,5,5,2,$str,$textColor);
//输出后清除资源
header("Content-type:image/jpeg");
imageJpeg($im);
imageDestroy($im);
}
*生成中文字符,
*
*必须有GD库、iconv或者mbstring库、相应的字体文件
*/
functionmakeChineseCharPic($str='中文字符'){
//转码
if(function_exists('iconv')){
$str=iconv('gbk','utf-8',$str);
}elseif(function_exists('mb_convert_encoding')){
$str=mb_convert_encoding($str,'utf-8','gbk');
}else{
exit("Noticonvcharset");
}
//产生图片
$im=imageCreate(80,30);
//背景色
$bkg=imageColorAllocate($im,0,255,255);
//字体色
$clr=imageColorAllocate($im,0,128,255);
//字体文件路径
$font="c:/windows/fonts/simhei.ttf";
//使用字体来画TTF内容
imageTTFText($im,13,0,5,20,$clr,$font,$str);
//--------------------------------------------------
//黑体:simhei.ttf,宋体:simsun.ttc,隶书:simli.ttf,楷体:simkai.ttf,幼圆:simyou.ttf
//华文行楷:stxingka.ttf,华文新魏:stxinwei.ttf,华文彩云:stcaiyun.ttf,华文仿宋:stfangso.ttf
//方正姚体:fzytk,方正舒体:fzstk.ttf
//--------------------------------------------------
//输出后清除资源
header("Content-type:image/png");
imagePng($im);
imageDestroy($im);
}
/**
*画英文字符(必须有GB库)
*/
functionmakeEnglishCharPic($str='ABCD12'){
//生成图片
$im=imageCreateTrueColor(65,20);
//背景色
$bg=imageColorAlLocate($im,0,0,0);
//字体色
$textColor=imageColorAlLocate($im,0,255,255);
//画图
imageString($im,5,5,2,$str,$textColor);
//输出后清除资源
header("Content-type:image/jpeg");
imageJpeg($im);
imageDestroy($im);
}
有兴趣的欢迎自行加入干扰元素,或者是对图片进行变形,让那些图片识别程序无法识别。(最近两个月超级忙,好久没写东西,写一篇凑数,嘿嘿,表见怪)