用JGraph组件生成图片验证码

  所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息
  

  输入表单提交网站验证,验证成功后才能使用某项功能。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了 验证码技术。

下面是用JGraph组件生成图片验证码的代码......

(注意:标准的JDK 不包含JGraph组件包,要单独下载(sun官方),添加到classpath环境)

package javabean;
import java.awt.Color;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

import org.jgraph.JGraph;
import org.jgraph.graph.DefaultCellViewFactory;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.GraphLayoutCache;
import org.jgraph.graph.GraphModel;

public class Graphic
{
 String webroot;                     //生成的图片验证码的存放目录
 String filename;                  //图片验证码文件名
 String random;          //验证码字符串
 
 public Graphic()
 {
  webroot="E://Img";     //这里设置图片验证码放在E盘Img目录下
  filename="number.png";
 }
 
 public String getFilename()
 {
  return filename;
 }
 
 public void setFilename(String filename)
 {
  this.filename=filename;
 }
 
 public String getRandom()
 {
  return random;
 }
 
 public void setRandom(String random)
 {
  this.random=random;
 }
 
 public void paint()
 {
  GraphModel model=new DefaultGraphModel();
  GraphLayoutCache view=new GraphLayoutCache(model,new DefaultCellViewFactory());
  JGraph graph=new JGraph(model,view);
  DefaultGraphCell cell=new DefaultGraphCell(random);
  GraphConstants.setBounds(cell.getAttributes(),new Rectangle2D.Double(0,0,100,50));
  GraphConstants.setGradientColor(cell.getAttributes(), Color.orange);
  GraphConstants.setOpaque(cell.getAttributes(),true);
  DefaultPort port=new DefaultPort();
  cell.add(port);
  graph.getGraphLayoutCache().insert(cell);
  JFrame frame=new JFrame();
  frame.getContentPane().add(new JScrollPane(graph));
  frame.pack();
  frame.setVisible(false);
  
  try
  {
   File f=new File(webroot,filename);
   ImageOutputStream ios=ImageIO.createImageOutputStream(f);
   BufferedImage img=graph.getImage(graph.getBackground(), 1);
   ImageIO.write(img, "png", ios);
   ios.flush();
   ios.close();
  }
  
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }
}

下面是测试例子:

import javabean.Graphic;
public class test
{
 public static void main(String[] args)
 {
  Graphic graphic=new Graphic();
  graphic.setRandom("DF1D2");             //这里我设置验证码的字符串为"DF1D2"
  graphic.paint();
 }

}

编译,运行,这样在E:/Img目录下就会生成简单的图片验证码

这里只是为演示用JGrqph组件生成图片验证码的方法


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值