session_start(); 
getCode(4,60,20);

function getCode($num,$w,$h) {
$code = "";
for ($i = 0; $i < $num; $i++) {
$code .= rand(0, 9);
}
//4位验证码也可以用rand(1000,9999)直接生成
//将生成的验证码写入session,备验证时用
$_SESSION["helloweba_num"] = $code;
//创建图片,定义颜色值
header("Content-type: image/PNG");
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, 0, 0, 0);
$gray = imagecolorallocate($im, 200, 200, 200);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
//填充背景
imagefill($im, 0, 0, $gray);

//画边框
imagerectangle($im, 0, 0, $w-1, $h-1, $black);

//随机绘制两条虚线,起干扰作用
$style = array ($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im, $style);
$y1 = rand(0, $h);
$y2 = rand(0, $h);
$y3 = rand(0, $h);
$y4 = rand(0, $h);
imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);

//在画布上随机生成大量黑点,起干扰作用;
for ($i = 0; $i < 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
$strx = rand(3, 8);
for ($i = 0; $i < $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 12);
}
imagepng($im);//输出图片
imagedestroy($im);//释放图片所占内存
}



imagecreate():创建一个新图像

imagecolorallocate():为图像分配颜色

imagefill():填充图像

imagerectangle():画一个矩形(边框)

imagesetstyle():设置画线风格

imageline():画一条线段

imagesetpixel():画点像素

imagepng():以PNG格式将图像输出到浏览器或文件

imagedestroy():释放图片所占内存

更多相关文章

  1. 如何调整图像覆盖滑块
  2. 使用ASIHTTPRequest从iOS上传图像
  3. 在PHP中将PDF文档转换为预览图像,而无需安装Ghostscript
  4. 我需要PHP页面显示mysql数据库中的BLOB图像
  5. 如何使用mysql在php文件夹中快速更改图像名称?
  6. 视差滚动与图像仅通过徽标透明度
  7. 在HTML上绘制画布并在屏幕大小上保留Aspect
  8. 具有固定宽度网格的引导程序和应跨越窗口宽度的图像
  9. 从文本框值生成条形码图像

随机推荐

  1. 我可以在JavaScript中从不同的页面传递参
  2. 为什么我不能删除数组的元素?
  3. JS 模仿块级作用域
  4. Javascript 面向对象编程(一):封装
  5. 轮播图---可以动态添加图片,(封装成一个函
  6. 如何淡入和淡出并改进我当前的JavaScript
  7. 切换页面时出现白屏闪烁
  8. 在导航图标css下包装文本。
  9. Day.js :一个轻量的处理时间和日期的 Java
  10. 用Node.js编写格式化的JSON