php生成验证码

生成验证码之前要知道以下几个函数:

1.创建画布

imagecreatetruecolor:新建一个真彩色图像

$img = imagecreatetruecolor(200,100);

2.创建颜色

imagecolorallocate:为一幅图像分配颜色

$color = imagecolorallocate($img,255,255,255);

3.填充

imagefill:区域填充

imagefill($img,0,0,$color);

4.画线

imageline: 画一条线段

$color = imagecolorallocate($img,0,0,255);
for($i=0;$i<10;$i++){
	$x1 = rand(0,200);
	$y1 = rand(0,100);
	$x2 = rand(0,200);
	$y2 = rand(0,100);
	imageline($img,$x1,$y1,$x2,$y2,$color);
}

5.画点

imagesetpixel — 画一个单一像素

$color = imagecolorallocate($img,0,0,0);
//随机画10个点
for($i=0;$i<10;$i++){
	$x = rand(0,200);
	$y = rand(0,100);
	imagesetpixel($img,$x,$y,$color);
}

6.画矩形

imagerectangle — 画一个矩形

imagefilledrectangle — 画一矩形并填充 

$color = imagecolorallocate($img,0,255,0);
// imagerectangle($img,50,50,100,100,$color);
imagefilledrectangle($img,50,50,100,100,$color);

7.输出文字

 imagettftext — 用 TrueType 字体向图像写入文本

$text = 'hello';
$color = imagecolorallocate($img,255,0,255);
$font = 'simsunb.ttf';
imagettftext($img,20,0,10,50,$color,$font,$text);

 生成验证码

<?php
//案例:生成验证码
header('content-type:image/png');
//字符串,去掉不容易是别的i,l,o,I,L,O
$str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

//画布
$width = 200;
$height = 100;
$img = imagecreatetruecolor($width,$height);

//颜色
$color = imagecolorallocate($img,0xcc,0xcc,0xcc);

//填充
imagefill($img,0,0,$color);

//画噪点
for($i=0;$i<100;$i++){
	$color = imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));
	$x = rand(0,$width);
	$y = rand(0,$height);
	imagesetpixel($img,$x,$y,$color);
}

//画噪线
for($i=0;$i<30;$i++){
	$color = imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));
	$x1 = rand(0,$width);
	$y1 = rand(0,$height);
	$x2 = rand(0,$width);
	$y2 = rand(0,$height);
	imageline($img,$x1,$y1,$x2,$y2,$color);
}

//画文字
$len = strlen($str);
$font = 'simsunb.ttf';
for($i=0;$i<4;$i++){
	$color = imagecolorallocate($img,255,0,0);
	$index = rand(0,$len-1);
	$chr = substr($str,$index,1);
	$x = 20 + ($i * 40);
	$y = 80;
	imagettftext($img,50,rand(-70,70),$x,$y,$color,$font,$chr);
}

//输出画布
imagepng($img);

//销毁画布
imagedestroy($img);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值