<%@ page contentType="image/jpeg;charset=gbk"%>
<%@ page import = "javax.imageio.*,java.util.*,java.awt.image.*,java.awt.*"%>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
// 将认证码存入SESSION
session.setAttribute("searchImg",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
//ImageIO.write(image, "JPEG", response.getOutputStream());
// 将图像输出到客户端
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(image, "jpeg", sos);
sos.close();
//out是个关键字
out.clear();
//pageContext java重要内置对象
out = pageContext.pushBody();
%>
分享到:
相关推荐
java 验证码 java 验证码 java 验证码 java 验证码
Java验证码框架.可实现多种验证很强大
java 验证码识别 ocr java 验证码识别 ocr
生成java验证码 添加水印 添加干扰线 图片压缩 设置字体
70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java...
java 验证码识别源程序 windows版本 概率90%以上
Java验证码生成库 JCaptcha
java验证码组件Jcaptcha,希望对大家有所帮助!!!
java验证码识别源码,验证码生成地址自己添加,main 函数两个方法取消注释
比较常见的Java验证码(解压导入MyEclipse即可),思路清晰,较容易理解!
csdn上三种java验证码生成方法,以及谷歌开源验证码,总共四种验证码生成集合。将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 ...
Java验证码,这里写了两个方法,仅供参考
java验证码识别示例
Java验证码案例,全新的Java验证码严重源码
java验证码识别 JAVA知识巩固 源码 java验证码识别 java验证码识别
学习时使用的验证码java程序,很简单,对于初学者帮助很大。
纯Java生成验证码图片工具类。使用时直接解压,将工具类导入Java项目即可,直接调用生成验证码方法即可。
验证码是各项目做登录功能常常使用的功能,现分享一个实现的源码。
一个java验证码的例子,适合初学者来学习。。。。。。。。