`
isiqi
  • 浏览: 16048975 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

产生验证码图像

阅读更多

//产生验证码图像GenerateJPEGServlet.java

package my.bbs.servlets;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class GenerateJPEGServlet extends HttpServlet {

private static int WIDTH = 120;
private static int HEIGHT = 43;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO 自动生成方法存根
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();

//设置浏览器不缓存此图片
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);

//创建内存图像并获得其图形上下文
BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();

//产生随机的验证码
char[] rands = generateCheckCode();

//产生图像
drawBackground(g);
drawRands(g,rands);

//结束图像的绘制过程,完成图像
g.dispose();
//将图像输出到客户端
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image,"JPEG",bos);
byte[] buf =bos.toByteArray();
response.setContentLength(buf.length);
//下面的语句也可以写成bos.writeTo(sos);
sos.write(buf);
bos.close();
sos.close();

//将当前验证码存入到Session中
session.setAttribute("check_code",new String(rands));



}

private char[] generateCheckCode()
{
//定义验证码存的字符表
String chars ="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] rands = new char[6];
for(int i=0;i<6;i++)
{
int rand =(int)(Math.random()*36);
rands[i] = chars.charAt(rand);
}
return rands;

}

private void drawRands(Graphics g,char[] rands)
{
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));
//在不同的高度上输出验证码的每个字符
g.drawString(""+rands[0],4,25);
g.drawString(""+rands[1], 20, 35);
g.drawString(""+rands[2],43,30);
g.drawString(""+rands[3],60,35);
g.drawString(""+rands[4],80,29);
g.drawString(""+rands[5],102,33);
}

private void drawBackground(Graphics g)
{
//画背景
g.setColor(new Color(0xDCDCDC));
g.fillRect(0,0,WIDTH,HEIGHT);
//随机产生120个干扰点
for(int i=0;i<120;i++)
{
int x =(int)(Math.random()*WIDTH);
int y =(int)(Math.random()*HEIGHT);
int red =(int)(Math.random()*255);
int green =(int)(Math.random()*255);
int blue =(int)(Math.random()*255);
g.setColor(new Color(red,green,blue));
g.drawOval(x, y, 2, 1);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO 自动生成方法存根
doGet(request,response);
}

}

分享到:
评论

相关推荐

    Python-captcha一个验证码库可以产生声音和图像验证码

    captcha-一个验证码库,可以产生声音和图像验证码

    简单实用的网站验证码asp源码

    图片验证码生成程序及使用 NetDust 验证码程序:DvCode.asp ...Rem 2007-7-18 来路判断,允许多页面同时产生验证码而不冲突 Rem 2008-12-23 斜向拉伸处理 Rem 2008-12-25 加入复杂颜色模式,进一步提高保护强度

    基于MATLAB完成数字验证码识别的GUI设计源码+说明(图像处理,验证码识别等功能).zip

    利用英国萨里大学提供的印刷体数字数据集,共10160张图片,90%的数据用于训练BP神经网络,剩余10%的数据用于测试,最终识别准确率达到93.47%,利用训练所得BP模型完成识别字符,最终验证码图像识别效果较佳。...

    Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理。这里介绍一下 Python 提供的 Pillow 模块。 Pillow PIL:Python Image Library,Python 的图像处理标准库,功能...

    自定义验证码,登录后进行验证

    定义图片的width、定义图片的height、定义图片上显示验证码的个数 创建字体,字体的大小应该根据图片的高度来定 ...随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像输出到Servlet输出流中

    PHP的图形验证码库.zip

    生成验证码的步骤大概就是:一)产生一个随机的字符串;二)创建一个图像(imagecreatetruecolor),然后将字符串输出到图像中(imagestring或者imagettftext);三)对图像进行噪点干扰,比如加入一些线条或者像素...

    用户登录、管理及验证码生成ASP代码.rar

     所谓验证码就是将一个随机数显示在一幅图片上,并在图片上产生干扰因素。验证码能够防止攻击者编写程序,自动注册,重复登录暴力破解密码等。  (2)验证码的实现过程  在服务器端随机生成验证码字符串,保存在...

    vcg(验证码控件)

    功能介绍:  为网页编程人员提供能够自动生成验证码图像并验证网页访问者输入的Web控件,具体功能如下: 1. 提供简单易用的设计时所见即所得的可视化设置方式,并且支持设计时验证码图像效果与特效属性设置...

    ASP.NET验证码

    学会设计通用的网页验证码功能,可用于用户登录、留言等...其中,GenerateCheckCode方法用于产生验证码,CreateCheckCodeImage方法用户产生北京图像。然后在目标Web页中调用CheckCode页面,实现目标页面的验证码功能。

    JS如何生成随机验证码

    本文实例为大家分享了JS生成随机验证码的具体代码,供大家参考,具体内容如下 在网站中我们很常见到形形色色的验证码,今天我们来用JS来生成一个随机的二维码。 我们需要用到canvas来进行验证码的绘制 什么是Canvas...

    中文验证码源码

    摘要:C#源码,图形图像,中文验证码  中文验证码源码,C#完美实例,自带判断模块,下面简要说一下本中文验证码的实现思路:获取GB2312编码页(表),调用函数产生4个随机中文汉字编码,根据汉字编码的字节数组解码出...

    PHP验证码生成原理和实现

    由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,很简陋但思想很清晰: 1、产生一张png的图片 2、为图片设置背景色 3、设置字体颜色和样式 4、产生4位数的随机的...

    PHP+Ajax实现验证码的实时验证

    我用nat123对我的电脑上的网站进行端口映射,实现了在外网访问,本来是采用cookie的方式用js对验证码进行验证,但是经检验发现nat123虽然使我的网站可以通过一个自定义的网址进行访问,但是产生验证码的php文件在...

    Python 模拟动态产生字母验证码图片功能

    模拟动态产生字母验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理。这里介绍一下 Python 提供的 Pillow 模块。 Pillow PIL:Python Image Library,Python 的图像处理标准库,功能...

    JSP验证码动态生成方法

    在登录应用中,为防止恶意登录,常常需要服务器动态生成验证码并存储在session作用范围中,最后以图像形式返回给客户端显示 下边的代码实现的功能:写一个JSP页,动态生成一个验证码,存储在session作用范围内,并以...

    如何使用PHP对网站验证码进行破解

    所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。学习验证码的破解/识别技术...

    中文验证码的C#源码例子

    摘要:C#源码,图形图像,验证码 C#实现中文验证码的例子。实现过程相关要点:获取GB2312编码页(表) ,调用函数产生4个随机中文汉字编码,根据汉字编码的字节数组解码出验证码中文汉字,生成随机生成器,清空图片...

    中文验证码源码,C#完美源码实例

    摘要:C#源码,图形图像,中文验证码 中文验证码源码,C#完美实例,自带判断模块,下面简要说一下本中文验证码的实现思路:获取GB2312编码页(表),调用函数产生4个随机中文汉字编码,根据汉字编码的字节数组解码出...

    JSP动态生成验证码存储在session作用范围内

    (1)在登录应用中,为防止恶意登录,常常需要服务器动态生成验证码并存储在session作用范围中,最后以图像形式返回给客户端显示 (2)下边的代码实现的功能:写一个JSP页,动态生成一个验证码,存储在session作用...

    php验证码的制作思路和实现方法

    由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,简单的思路分析: 1、产生一张png的图片 2、为图片设置背景色 3、设置字体颜色和样式 4、产生4位数的随机的验证码...

Global site tag (gtag.js) - Google Analytics