GD图片(画布)的制作及验证码的应用
创建画布:创建画布的函数有
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图片(画布)的制作及验证码的应用的更多相关文章
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- php GD 和图像处理函数, 制作一张图片
php GD 和图像处理函数, 制作一张图片 // GD 和图像处理函数 // https://www.php.net/manual/zh/ref.image.php // https://www.p ...
- J2EE如何生成验证码图片和点击刷新验证码
验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColo ...
- NGUI和UGUI图片字 艺术字(Bitmap图片转文字)制作方法
用图片字而不是图片 美术和程序的配合,需要程序能够很快抓住问题重点并提出解决方案.美术出的图片字比我们使用的字体更好好看,那么是否要一个个图片去拼成数字呢? NGUI创建图片字 准备材料 美术提供的数 ...
- Adobe Fireworks CS6是一款集网页图片设计、制作与编辑为一体的专业软件
Adobe Fireworks CS6是一款集网页图片设计.制作与编辑为一体的专业软件,它不仅可以轻松制作出各种动感的Gif.动态按钮.动态翻转等网络图片,还可以轻松实现大图切割,让网页加载的图片显示 ...
- 笔记11:GDI 制作数字验证码
大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...
- 怎样制作PHP验证码?
<?php /** *制作验证码 *1.启动session *2.设定标头 *3.创建画布 *4.创建颜色 *5.创建随机数并放到画布上 *6.将得到的若干随机数放入session中 *7.添加 ...
- java 用Graphics制作模糊验证码
这篇随笔主要是java中制作验证码的效果,由于是在国庆前做的,现在也找不到原载了.我对自己整理的发表一份 生成的验证码效果如下: 一.建立一个工具类,用来生成验证码 package com.dkt.u ...
- CSS 图片倾斜的制作
<style> #zhong{ height:600px; width:1350px; position:relative; z-index:2} .znei{ height:60px; ...
随机推荐
- Thunderbird扩展
FromToGMAP 1.4 Mail Redirect 0.7.8 MinisizeToTray revived 1.1.2 Nightly Tester Tools 3.7 Thunderbrid ...
- HDU 4003 [树][贪心][背包]
/* 大连热身A题 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一棵树,每条边上有权值.给一个起点,放置n个机器人,要求使得任意一个节点至少被一个机器人经过. 每个机器人经过某条边时的代价为这条 ...
- List subList(startIndex, endIndex);
1. subList(startIndex, endIndex);//startIndex开始,到endIndex结束,不包含endIndex! 2. 集合排序可以实现 java.util.Compa ...
- Redis(一) 介绍
先说明下,本人是在windows系统下用的. 简单介绍一下,是nosql数据库,采用key-value存储方式形式.可用于处理高并发日志.维护top表等. 如果把它完全当初数据库使用,当做小型数据库还 ...
- php源码之遍历目录下的所有的文件
<?php //遍历目录下的所有的文件 -- 递归调用 // http://www.manongjc.com/article/1495.html function get_all_file1($ ...
- Maven基础笔记,原理
1.什么是Maven ①Maven是一款实现自动化构建的工具软件. ②构建:从源程序→程序的执行 清理→编译→测试→报告→打包→部署→执行 ③构建工具:Make→Ant→Maven→Gradle... ...
- SpingMVC ModelAndView, Model,Control以及参数传递
1.web.xml 配置: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class& ...
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...
- java注解(Annotation)解析
注解(Annotation)在java中应用非常广泛.它既能帮助我们在编码中减少错误,(比如最常见的Override注解),还可以帮助我们减少各种xml文件的配置,比如定义AOP切面用@AspectJ ...
- 45、Docker 加 tensorflow的机器学习入门初步
[1]最近领导天天在群里发一些机器学习的链接,搞得好像我们真的要搞机器学习似的,吃瓜群众感觉好神奇呀. 第一步 其实也是最后一步,就是网上百度一下,Docker Toolbox,下载下来,下载,安装之 ...