package com.apectra.pub;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Vimage extends HttpServlet {
public void destroy() {
super.destroy();
}
/*
* service
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//首先设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires",0);
//定义图片的宽度和高度
int width = 90;
int height = 30;
//创建一个图片对象
BufferedImage image= new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
//得到图像的环境对象
Graphics g = image.createGraphics();
//用随机颜色填充图像背景
Random random = new Random();
g.setColor(getColor(180,250));
g.fillRect(0, 0, width, height);
for(int i=0; i< 5; i++)
{
g.setColor(getColor(50,100));
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x, y, 4, 4);
}
g.setFont(new Font("",Font.PLAIN,28));
//生成随机字符串
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(80),20+random.nextInt(100),20+random.nextInt(90)));
g.drawString(sRand,15,25);
//生成干扰向
for(int j=0;j<12;j++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(9);
int y1 = random.nextInt(9);
g.drawLine(x, y, x+x1, y+y1);
}
}
request.getSession().setAttribute("randCode",sRand);
//使画像生成
g.dispose();
//输出图形到页面
ImageIO.write(image, "jpg", response.getOutputStream());
}
/**
* 产生一个随机的颜色
* @return
*/
public Color getColor(int fc,int bc)
{
Random random = new Random();
if(fc > 255)
{
fc = 255;
}
if(bc > 255)
{
bc = 255;
}
int red = fc + random.nextInt(bc - fc);
int green = fc + random.nextInt(bc - fc);
int blue = fc + random.nextInt(bc - fc);
return new Color(red,green,blue);
}
public void init() throws ServletException {
}
}
分享到:
相关推荐
java版本破解新浪验证码程序java版本破解新浪验证码程序
java 验证码识别源程序 windows版本 概率90%以上
为了防止某些用户使用软件进行登录和发布信息,很多网站在用户登录或者发布信息时,都要求用户输入验证码。验证码通常是以一幅图片的形式显示的,用户按照图片中显示的数字或者字母依次输入,服务端将对用户输入和...
这是我在业余时间用java语言实现的验证码识别功能,其中用到OCR工具,这个需要提前下载安装,不懂的童鞋自行google之。
一个简单的java小程序,用来生成登陆页面的验证码。一个简单的java小程序,用来生成登陆页面的验证码。一个简单的java小程序,用来生成登陆页面的验证码。
JAVA一段生成验证码图片的程序 JAVA一段生成验证码图片的程序 JAVA一段生成验证码图片的程序 JAVA一段生成验证码图片的程序
Java验证码程序。 public class CheckImage extends HttpServlet==
用java实现的简单验证码程序,仅仅实现了随机文字,而且只是数字,未加入背景图片和干扰线
使用java写的验证码应用程序,可以在页面上自动生成验证码,用于用户输入验证码认证
java代码识别验证码程序,通过识别图片的验证码来获取,一定记得看说明
1、访问验证码链接保存图片 2、去除干扰线 3、把图片分割,保存素材 3、图片匹配() 比较图片相似: 1、把图片转换成二进制码,进行比较。计算相似度(BMPLoader)。匹配的值太多,准确率差。这个就只适用简单的...
java 生成彩色验证码的程序,改程序可以极大的帮助你,是你可以自动生成彩色的验证码
学习时使用的验证码java程序,很简单,对于初学者帮助很大。
Java通用验证码程序及应用示例.附件里是我保存的网页,直接看网页就行了
这是一个用java Swing来写的CRC验证码。本来是写来应付老师作业的。 后来想想和大家分享下~呵呵,
java验证码识别,可识别验证码的小程序,源代码很详细哦
强大的JAVA通用验证码程序,含源码、示例及文档
java验证码的完整程序(登陆等情况时使用的时时验证码的生成、提交验证等完整程序)
Java中生成验证码代码,下载此资源后可直接在程序中使用。
用java编写的四位随机的验证码,包括数字跟字母 简单易懂