`
datuo
  • 浏览: 81023 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

产生验证图片JAVA代码

阅读更多

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
 * 产生四们随机数字的验证图片
 * @author yidatuosi
 *
 */
public class ImageTool
{
 public String sRand = "";

 public 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);
 }
 
 public BufferedImage creatImage()
 {//在内存中创建图像
  int width = 60;
  int 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条干扰经,使图像中的认证码不易被其他程序探测到
  for(int i=0; i<155; i++)
  {
   g.setColor(getRandColor(160,200));
   int x = random.nextInt(width);
   int y = random.nextInt(height);
   int x1 = random.nextInt(12);
   int y1 = random.nextInt(12);
   g.drawLine(x, y, x+x1, y+y1);
  }
  
  //取随机产生 的认证码(4位数字)
  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);
  }
  
  //图像生效
  g.dispose();
  return image;
 }
 
 public String getRand()
 {
  return sRand;
 }
 
 public static void main(String[] args)
 {
  ImageTool it = new ImageTool();
  JFrame jf = new JFrame();
  jf.setSize(200,300);
  jf.setTitle("产生验证码");
  
  Container ct = jf.getContentPane();
  ImageIcon ii = new ImageIcon(it.creatImage());
  JLabel jl = new JLabel(ii);
  ct.add(jl);
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jf.setVisible(true);
  System.out.println(it.getRand());
 }
}
 

分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包4

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包3

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    Java实用程序设计100例(源代码)

    产生自己的控件  Java控件的相互控制与消息传递  Java圆形的按钮制作  密码验证框  视频播放程序  定时器的使用  Java建立Http连接  用RMS记录个人信息  Java建立与断开数据库的连接  Java创建和...

    java图片验证

    java登入界面随机验证码产生的代码,让你自己来展示验证码,让你懂得java的博大精深

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果 Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、...

    从Java走向Java+EE+.rar

    6.3 实例——利用JSP制作图片缩略图 87 6.4 小结 90 第7章 JSTL——JSP标准标签库 91 7.1 JSTL基础 91 7.1.1 JSTL的核心标签库 92 7.1.2 JSTL中使用表达式语言 93 7.2 实例——利用JSTL标签生成数字序列...

    Java实用程序设计100例源代码

    摘要:Java源码,书籍源码,Java源代码 Java实用程序设计100例源代码,这些实例主要有:  产生自己的控件  Java控件的相互控制与消息传递  Java圆形的按钮制作  密码验证框  视频播放程序  定时器的使用  Java...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果 Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、...

    java编程100例

    java编程100实例,适合初学java的朋友学习,含有源代码,省去了码代码的时间,可以直接导入,运行。建议实用eclipse,内容如下: 实例1 产生自己的控件 实例2 控件的排布示例 实例3 控件的相互控制与消息传递 实例4 ...

    JAVA面试题最全集

    1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑) 2.简单介绍您所了解的MVC。 3.简单介绍所了解的XML。 4.文档和编码规范 5.Java中的分页、效率考虑。 6.简单介绍您所...

    Java开源的下一代社区平台Symphony.zip

    发帖者可以进行该帖更新,但是每次更新都会产生编辑历史,浏览者可以看到并对比其内容变更。目前还不支持回帖更新,后续会加入,敬请期待。 帖子和回帖都可以使用匿名身份进行发布,你懂的。 对搜索引擎友好 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    《javaScrip开发技术大全》源代码

    第2章(\代码\第02章) • sample01.htm 将JavaScript代码插入在标签与标签之间 • sample02.htm 将JavaScript代码放在了标签与标签之间 • sample03.htm JavaScript与HTML混合执行 • ...

Global site tag (gtag.js) - Google Analytics