图片验证码的Java实现方式

原创 2013年12月05日 23:32:40

      在网站登录或者验证的时候,为了防止有人使用程序不断发送登录,注册信息等,要求发送者输入图片上的信息,以提高安全性。

实现代码如下:

package com.uestc.test;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;

public class ImageCreator {
	private static  String str="颞部发呢热佛如警女人飞年份恩赐";
	//产生随机颜色
	public static Color getRandomColor(){
		Random random=new Random();
		return new Color(Math.abs(random.nextInt(255)),Math.abs(random.nextInt(255)),Math.abs(random.nextInt(255)));
	}
	public static void main(String[] args) throws NoSuchMethodException,
			SecurityException {
		int width=200;
		int height=100;
		Random random=new Random();
		BufferedImage im=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
		Graphics2D grapgic=(Graphics2D)im.getGraphics();
		//设置图片背景颜色
		grapgic.setColor(Color.white);
		grapgic.fillRect(0, 0, width, height);
		//设定文字大小
		Font font=new Font("华文楷书",Font.BOLD,18);
		
		grapgic.setFont(font);
		int num=Math.abs(random.nextInt(4));
		//产生num个随机数字
		for(int i=0;i<num;i++){
			grapgic.setColor(getRandomColor());		
			grapgic.drawString(String.valueOf(random.nextInt()%10),i*width/4+10, height/2);			
		}
		
		//产生4-num个随机汉字
		for(int j=num;j<4;j++){
			grapgic.setColor(getRandomColor());		
			grapgic.drawString(String.valueOf(str.charAt(Math.abs(random.nextInt(str.length())))),j*width/4+10, height/2);	
		}
		//获取字体的大小
		FontMetrics metrics=grapgic.getFontMetrics();
		grapgic.drawLine(0, height/2-metrics.getHeight()/4, width, height/2-metrics.getHeight()/2);
		//释放此图形的上下文并释放它所使用的所有系统资源
		grapgic.dispose();
		File file=new File("d:\\example.png");
		try {
			ImageIO.write(im, "png", file);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

图片验证码的执行结果:

                                         

JAVA网页图片验证码的实现

网页图形验证码的实现验证码验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apar...
  • c99463904
  • c99463904
  • 2017年03月04日 20:12
  • 1386

java web中图片验证码功能实现

用户在注册网站信息的时候基本上都要数据验证码验证。那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6....
  • longshengguoji
  • longshengguoji
  • 2014年09月20日 23:17
  • 4051

生成图片验证码的两种实现方式

最近工作中,需求让新加一个图片验证码功能,其实这个功能之前自己写过,想必跟大家现在心里想到的实现方式一样,要么是通过servlet实现请求操作,要么是通过get请求实现操作。然后在后台通过sessio...
  • buyaoshuohua1
  • buyaoshuohua1
  • 2017年06月22日 23:22
  • 2246

java实现图片验证码全套实现方式

java引用的包import java.io.IOException; import java.util.ArrayList; import java.util.List; import jav...
  • u010800804
  • u010800804
  • 2016年05月05日 10:36
  • 8616

生成图片验证码的两种实现方式

最近工作中,需求让新加一个图片验证码功能,其实这个功能之前自己写过,想必跟大家现在心里想到的实现方式一样,要么是通过servlet实现请求操作,要么是通过get请求实现操作。然后在后台通过sessio...
  • buyaoshuohua1
  • buyaoshuohua1
  • 2017年06月22日 23:22
  • 2246

Java代码生成图片验证码实现

介绍一个使用Java代码生成随机图片验证码的示例 Java代码随机生成图片验证码 package com.rchm.util.images; import java.awt.Color; i...
  • rchm8519
  • rchm8519
  • 2015年04月16日 21:44
  • 15320

JAVA网页图片验证码的实现

网页图形验证码的实现验证码验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apar...
  • c99463904
  • c99463904
  • 2017年03月04日 20:12
  • 1386

java web笔记——随机图片验证码实现看不清换一张

Servlet和JS实现的随机验证码图片,并且点击换一张不会刷新清空已填写的内容。 Servlet类代码: package myweb;import java.awt.BasicStroke; im...
  • qq_15370821
  • qq_15370821
  • 2016年04月21日 00:03
  • 507

java web中图片验证码功能实现

用户在注册网站信息的时候基本上都要数据验证码验证。那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6....
  • longshengguoji
  • longshengguoji
  • 2014年09月20日 23:17
  • 4051

Java图片验证码的实现

这里主要用到了三个文件,两个servlet类,一个JSP页面。两个servlet分别为drawCode.java和ValidateServlet.java,前者用来产生验证码,后者用来检验验证码是否正...
  • cighao
  • cighao
  • 2015年08月21日 17:19
  • 344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片验证码的Java实现方式
举报原因:
原因补充:

(最多只允许输入30个字)