创建画布:创建画布的函数有

imagecreatetruecolor(width,height);创建画布

width指画布的宽height指画布的高

imagecolorallocate(img,red,green,blue);创建画布句柄

img是一个画布资源,后面的rgb就代表一个颜色!

imagetring(img,size,x,y,string,color);绘制文字

img:画布资源

size:文字的大小,这里只能是1-5,并且5最大

x、y:起始坐标

string:文字内容

color:颜色句柄

imagefill(img,x,y,color);填充背景

img:画布资源

x、y:坐标点

color:要填充的颜色句柄

imageline(img,x1,y1,,x2,y2,color)干扰线

imagesetpixel(img,x1,y1,,x2,y2,color)干扰点

ob_clean();清楚数据缓冲区

输出图片之前设置响应头信息header("Content-type:image/png");这里的png指的是用什么函数输出就用什么函数的后缀

imagepng,imagejpeg,imagejif输出图片的函数

<?php
//设置响应头信息
header("Content-type:text/html;charset=utf-8");
//创建一个画布资源
$img=imagecreatetruecolor(200,50);
//创建画布背景句柄
$color=imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(200,255));
//填充背景颜色
imagefill($img,0,0,$color);
$arr=array_merge(range('A','Z'),range('a','z'),range(0,20));
//打乱该数组
shuffle($arr);
//利用array_rand()函数随机获取若干个该数组的下标
$rand_key=array_rand($arr,4);
$str='';
foreach($rand_key as $value){
    $str.=$arr[$value];
}
session_start();
$session['huabu']=$str;
//循环遍历将文字写在画布上
$pant=ceil(200/(4+1));
for($i=1;$i<=4;$i++){
$strcolor=imagecolorallocate($img,mt_rand(2,20),mt_rand(20,20),mt_rand(20,55));
imagestring($img,5,$i*$pant,20,$str[$i-1],$strcolor);
}
//使用imageline函数给画布添加干扰线
for($i=1;$i<=5;$i++){
    $linecolor=imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(200,255));
imageline($img,mt_rand(0,199),mt_rand(0,49),mt_rand(0,199),mt_rand(0,49),$linecolor);
}
//使用imagesetpixel函数给画布添加干扰点
for($i=1;$i<=200*100*0.01;$i++){
    $fillcolor=imagecolorallocate($img,mt_rand(0,200),mt_rand(0,200),mt_rand(0,255));
imagesetpixel($img,mt_rand(0,199),mt_rand(0,49),$fillcolor);
}
//设置画布的响应头
header("Content-type:image/png");
//清除空格
ob_clean();
//输出画布
imagepng($img);

GD图片(画布)的制作及验证码的应用的更多相关文章

  1. python之使用PIL模块制作随机验证码

    制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...

  2. php GD 和图像处理函数, 制作一张图片

    php GD 和图像处理函数, 制作一张图片 // GD 和图像处理函数 // https://www.php.net/manual/zh/ref.image.php // https://www.p ...

  3. J2EE如何生成验证码图片和点击刷新验证码

    验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColo ...

  4. NGUI和UGUI图片字 艺术字(Bitmap图片转文字)制作方法

    用图片字而不是图片 美术和程序的配合,需要程序能够很快抓住问题重点并提出解决方案.美术出的图片字比我们使用的字体更好好看,那么是否要一个个图片去拼成数字呢? NGUI创建图片字 准备材料 美术提供的数 ...

  5. Adobe Fireworks CS6是一款集网页图片设计、制作与编辑为一体的专业软件

    Adobe Fireworks CS6是一款集网页图片设计.制作与编辑为一体的专业软件,它不仅可以轻松制作出各种动感的Gif.动态按钮.动态翻转等网络图片,还可以轻松实现大图切割,让网页加载的图片显示 ...

  6. 笔记11:GDI 制作数字验证码

    大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...

  7. 怎样制作PHP验证码?

    <?php /** *制作验证码 *1.启动session *2.设定标头 *3.创建画布 *4.创建颜色 *5.创建随机数并放到画布上 *6.将得到的若干随机数放入session中 *7.添加 ...

  8. java 用Graphics制作模糊验证码

    这篇随笔主要是java中制作验证码的效果,由于是在国庆前做的,现在也找不到原载了.我对自己整理的发表一份 生成的验证码效果如下: 一.建立一个工具类,用来生成验证码 package com.dkt.u ...

  9. CSS 图片倾斜的制作

    <style> #zhong{ height:600px; width:1350px; position:relative; z-index:2} .znei{ height:60px; ...

随机推荐

  1. system verilog的一些总结(从其他博客复制来的)

    转载自 http://blog.sina.com.cn/s/blog_e7fec2630101f5t9.html SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE 136 ...

  2. MVC中使用内建的HTML辅助方法产生表单元素提交表单与button按钮事件的陷阱

    网站模板页有个登陆的退出按钮,当点击时跳转到登陆页面. <button onclick="logout()" >退出</button> $("#l ...

  3. CRM客户关系管理系统 北京易信软科信息技术有限公司

    北京易信软科信息技术有限公司 推出大型erp系统,库存管理系统,客户关系管理系统,车辆登记管理系统,员工管理系统,采购管理系统,销售管理系统,为您的企业提供最优质的产品服务 北京易信软科您可信赖的北京 ...

  4. Oracle创建表空间、创建用户以及授权、查看权限

    常用的,留着备用 1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_tempTEMPFILE 'C:\oracle\product\10.1.0\oradata\o ...

  5. Shuffling Machine和双向链表

    1. 双向链表 https://github.com/BodhiXing/Data_Structure 2. Shuffling Machine https://pta.patest.cn/pta/t ...

  6. EX的魔方

    https://www.luogu.org/problem/show?pid=2007 题目背景 常神牛从来没接触过魔方,所以他要借助计算机来玩.即使是这样,他还是很菜. 题目描述 常神牛家的魔方都是 ...

  7. android开发--Application

    Android Application介绍 一.先看看文档里怎么说 Base class for those who need to maintain global application state ...

  8. 使用HttpClient获取网上字符串和位图对象Bitmap

    import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import ...

  9. UIImage类扩展返回一个带边框的圆形图片

    /** * 将image转换为圆型带边框的图片(最好写一个UIImage的类扩展) * * @param name 图片的名字 * @param borderWidth 外层边框的宽度 * @para ...

  10. iOS强制屏幕旋转

    /** 强制旋转屏幕为纵向 (注:这种方式 键盘不能旋转过来; iOS8.x下 UIAlterView旋转不过来  ) @return */ + (void)rotateOrientationPort ...