//生成随机字符串
$arr1=range('a','z');
$arr2=range('A','Z');
$arr3=range('0','9');
$arr_all=array_merge($arr1,$arr2,$arr3);
//打乱数组内元素顺序
shuffle($arr_all);
$arr_key=array_rand($arr_all,4);
$str="";
foreach($arr_key as $value){
$str.=$arr_all[$value];
}
//创建画布
$img_w=300;
$img_h=150;
$img=imagecreatetruecolor($img_w,$img_h);
//设置可变颜色
//设置整体背景色使用
$color1=imagecolorallocate($img,rand(50,200),rand(50,200),rand(50,200));
//设置字符串颜色使用
$color2=imagecolorallocate($img,rand(50,200),rand(50,200),rand(50,200));
//设置背景
//1、设置随机背景色
imagefilledrectangle($img,0,0,$img_w,$img_h,$color1);
//向图像写入随机字符串
//此处写入字符串可以使字符串在像素点和线条的后边
imagettftext($img,60,0,50,100,$color2,'./font/ygy.ttf',$str);
//2、设置随机色像素点
for($i=0;$i<1000;$i++){
$color3=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($img,rand(0,$img_w),rand(0,$img_h),$color3);
}
//3、设置随机线条
for($i=0;$i<50;$i++){
$color4=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imageline($img,rand(0,$img_w),rand(0,$img_h),rand(0,$img_w),rand(0,$img_h),$color4);
}
//声明网页内容类型为图像
header("content-type:image/png");
//输出图像
imagepng($img);
//关闭图像释放资源
imagedestroy($img);
结果如下:
图片.png
相关函数详解:
1、产生一个指定范围的数组range()
1)描述:建立一个包含指定范围单元的数组
2)语法:array range ( mixed $start , mixed $limit [, number $step = 1 ] )
3)参数:
a、$start 指定范围第1个值;
b、$limit 指定范围最后1个值;
c、$step 指定步长值,必须为正整数,默认为1。
2、合并数组array_merge()
1)描述:合并一个或多个数组
2)语法:array array_merge ( array $array1 [, array $... ] )
3)说明:如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
3、从数组中随机取出一个或多个单元
1)描述:从数组中随机取出一个或多个单元
2)语法:mixed array_rand ( array $input [, int $num_req = 1 ] )
3)参数:$input
代表当前数组 , $num_req
指明了你想取出多少个单元。
4)返回值:如果只取出一个,array_rand()返回一个随机单元的键名,否则就返回一个包含随机键名的数组。
4、生成更好的随机数
1)描述:生成更好的随机数
2)语法:int mt_rand ( int $min , int $max )
3)参数:min可选的、返回的最小值(默认:0);max可选的、返回的最大值。
网友评论