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; ...
随机推荐
- python Queue模块
先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...
- MySql增删改查命令
5.1 创建数据表 命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); 例如,建 ...
- mongoosejs model mapping to collection name
mongoosejs 是一个对象模型工具,将mongodb的collection中的Document映射为Model 典型用法如下 var mongoose = require('mongoose') ...
- 冒泡排序,sql分页语句
对数组中的数字进行排序 public int[] PopSmall(int[] IntArray) { ; ; i < IntArray.Length - ; i++) { ; j < I ...
- javaEE中关于dao层和services层的理解
javaEE中关于dao层和services层的理解 入职已经一个多月了,作为刚毕业的新人,除了熟悉公司的项目,学习公司的框架,了解项目的一些业务逻辑之外,也就在没学到什么:因为刚入职, 带我的那个师 ...
- ajax学习总结
一.ajax简介 AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),AJAX 是一种与服务器交换数据的技术,他可以在 ...
- LVS+keepalived负载均衡实战
1 首先安装虚拟机 安装系统 这里 配置两台虚拟机 1:192.168.137.102 2:192.168.137.103 分别安装tomcat 默认80端口,同时都是开启状态 配置192.168 ...
- js的倒计时在ie下显示NAN的最佳解决办法
写了一个倒计时,原代码如下: var times = new Date(); var timesout = new Date("2016-6-7"); var timesg = t ...
- 《循序渐进》之简单的DHCP实验
目的:初学,配置简单的DHCP试验. 试验步骤: 1:拓扑图 2:配置: Router>en Router#config t Enter configuration commands, one ...
- Mbps、Kbps、bps、MB、KB
1:运营商带宽衡量单位: Mbps:百万位每秒 kbps:千位每秒 bps:位每秒 b:bit,比特 1Mbps=1000kbps=1,000,000bps 这些单位通常用来表示每秒传输的二进制位 2 ...