1. <?php
  2. header("content-type:image/png");
  3. $width = 500;
  4. $height = 500;
  5. $img = imagecreatetruecolor($width, $height);
  6. $string = "hello";
  7. //7种颜色,存入数组
  8. $red = imagecolorallocate($img, 255, 0, 0);
  9. $white = imagecolorallocate($img, 255, 255, 255);
  10. $green = imagecolorallocate($img, 0, 255, 0);
  11. $blue = imagecolorallocate($img, 0, 0, 255);
  12. $aaa = imagecolorallocate($img, 255, 255, 0);
  13. $bbb = imagecolorallocate($img, 0, 255, 255);
  14. $ccc = imagecolorallocate($img, 255, 0, 255);
  15. $colors = array($white,$red,$green,$blue,$aaa,$bbb,$ccc);
  16. //画点
  17. for ($i=0; $i < 1000; $i++) {
  18. imagesetpixel($img, mt_rand(0,$width), mt_rand(0,$height), $colors[mt_rand(0,6)]);
  19. }
  20. //划线
  21. for ($i=0; $i < 200; $i++) {
  22. imageline($img, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $colors[mt_rand(0,6)]);
  23. }
  24. //生成4位验证码
  25. $a1 = range(0, 9);
  26. $a2 = range(a, z);
  27. $a3 = range(A, Z);
  28. $a4 = array_merge($a1,$a2,$a3);
  29. $num = 4;
  30. $fontsize = 60;
  31. for ($i=0; $i < 4; $i++) {
  32. imagettftext($img, $fontsize, mt_rand(-45,45), $width/$num*$i+$fontsize, $height/2, $colors[mt_rand(0,6)], "Fonts/msyh.ttf", $a4[mt_rand(0,61)]);
  33. }
  34.  
  35. imagepng($img);
  36. ?>

------------------------------------------------------------------------------- -----------------------------------------------------------------------------

下面的小一点:

  1. <?php
  2. header("content-type:image/png");
  3. $width = 110;
  4. $height = 40;
  5. $img = imagecreatetruecolor($width, $height);
  6. $string = "hello";
  7. //7种颜色,存入数组
  8. $red = imagecolorallocate($img, 255, 0, 0);
  9. $white = imagecolorallocate($img, 255, 255, 255);
  10. $green = imagecolorallocate($img, 0, 255, 0);
  11. $blue = imagecolorallocate($img, 0, 0, 255);
  12. $aaa = imagecolorallocate($img, 255, 255, 0);
  13. $bbb = imagecolorallocate($img, 0, 255, 255);
  14. $ccc = imagecolorallocate($img, 255, 0, 255);
  15. $colors = array($white,$red,$green,$blue,$aaa,$bbb,$ccc);
  16. //画点
  17. for ($i=0; $i < 10; $i++) {
  18. imagesetpixel($img, mt_rand(0,$width), mt_rand(0,$height), $colors[mt_rand(0,6)]);
  19. }
  20. //划线
  21. for ($i=0; $i < 4; $i++) {
  22. imageline($img, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $colors[mt_rand(0,6)]);
  23. }
  24. //生成4位验证码
  25. $a1 = range(0, 9);
  26. $a2 = range(a, z);
  27. $a3 = range(A, Z);
  28. $a4 = array_merge($a1,$a2,$a3);
  29. $num = 4;
  30. $fontsize = 20;
  31. for ($i=0; $i < 4; $i++) {
  32. imagettftext($img, $fontsize, mt_rand(-45,45), $width/$num*$i+5, 30, $colors[mt_rand(0,6)], "Fonts/msyh.ttf", $a4[mt_rand(0,61)]);
  33. }
  34. imagepng($img);
  35. ?>

PHP学习笔记(5)GD库画验证码的更多相关文章

  1. 一起学习PHP中GD库的使用(三)

    上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能.不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用.毕竟现在的各种外挂软件已经能 ...

  2. 一起学习PHP中GD库的使用(二)

    在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码.今天的内容主要就是和画图有关,所以最后我们也会做一个 ...

  3. 一起学习PHP中GD库的使用(一)

    又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎.从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们 ...

  4. php笔记之GD库图片创建/简单验证码

    燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...

  5. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  6. PHP学习笔记(4)GD库画五角星

         <?php //加header头,不然浏览器乱码 header("content-type: image/png"); //创建画布资源 $img = imagec ...

  7. LearnOpenGL学习笔记(一)画个三角形

    开始学习OpenGL,参考的是著名的LearnOpenGL这个网站,在这里做一些总结性的记录,只是方便自己日后查找或者记录自己的一些拓展思考,关于OpenGL的具体内容请移步: https://lea ...

  8. Direct2D 学习笔记(2)画刷 Brush

    画刷的使用方法 需要包含的文件:<wincodec.h> 需要包含的库: "windowscodecs.lib" 资源网址:    https://docs.micro ...

  9. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

随机推荐

  1. iOS:多线程的详细介绍

    多线程: 一.概念 1.什么是进程?     程序的一次性执行就是进程.进程占独立的内存空间.   2.什么是线程?     进程中的代码的执行路径.   3.进程与线程之间的关系?      每个进 ...

  2. ONVIF-WSDL

    http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/event/ ...

  3. 手写Json转换

    在做项目的时候总是要手动将集合转换成json每次都很麻烦,于是就尝试着写了一个公用的方法,用于转换List to json: using System; using System.Collection ...

  4. 机器学习基石第一讲:the learning problem

    博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) Andrew Ng的Machine Learning比較简单,已经看完.林田轩的机器 ...

  5. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何声明定时器,使用定时器TON模块 TC3

    TON功能块功能: 当输入为高电平时,计时器开始计时,CV表示计时器计时的当前值,而PV则是计时的目标值,当CV的值等于PV的值时,输出置1.     在主程序接下去的地方按下F2并添加TON功能块. ...

  6. Git学习笔记四--远程仓库

    Git远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本 ...

  7. linux Java 手动GC 手动回收垃圾

    logs_paths[0]="xxxx_tomcat8_9001"; logs_paths[1]="xxxx_tomcat8_9002"; for logs_p ...

  8. Linux-Nginx-关闭进程

    当然就仅仅是介绍一条命令了,就这么简单. nginx默认创建一个工作进程 root 2713 1 0 07:56 ? 00:00:00 nginx: master process ../sbin/ng ...

  9. 忽略警告注解@SuppressWarnings详解

    简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量上. 作用:告诉编译器忽略指定的警告 ...

  10. Sqlldr导入txt文件内容到数据库中

    需求:数据迁移,将txt文件中的内容导入oracle数据库的表中,文本文件中数据格式如下(数据以空格隔开) 1. 创建与文本数据格式相匹配的表(此处在scott用户下创建) create table ...