zoukankan      html  css  js  c++  java
  • java生成验证码

    一:需求分析

    使用java生成验证码:

    1:生成画布,画好背景图

    2:画随机数

    3:画干扰线

    4:将内存中的图片保存到硬盘上

    二:代码如下

     1 /**
     2  * 
     3  */
     4 package com.hlcui.io;
     5 
     6 import java.awt.Color;
     7 import java.awt.Font;
     8 import java.awt.Graphics;
     9 import java.awt.image.BufferedImage;
    10 import java.io.File;
    11 import java.io.IOException;
    12 import java.util.Random;
    13 
    14 import javax.imageio.ImageIO;
    15 
    16 /**
    17  * @author Administrator 生成验证码
    18  */
    19 public class ValidateCode {
    20     // 定义画布的宽和高
    21     public static final int WIDTH = 300;
    22     public static final int HEIGHT = 150;
    23     public static BufferedImage bi;
    24     public static Graphics g;
    25     public static Random r = new Random();
    26 
    27     // 生成min到max之间的随机数
    28     private static int r(int min, int max) {
    29         int num = r.nextInt(max - min) + min;
    30         return num;
    31     }
    32 
    33     // 画背景图
    34     public static void generateBg() {
    35         bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    36         g = bi.getGraphics();
    37         g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255))); // 设置画布的背景色
    38         g.fillRect(0, 0, WIDTH, HEIGHT); // 填充
    39     }
    40 
    41     // 画随机数
    42     public static void generateNum() {
    43         String words = "abcdefghijklmnopqrstuvwxyz0123456789";
    44         for (int i = 0; i < 4; i++) {
    45             g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255)));
    46             g.setFont(new Font("微软雅黑", Font.PLAIN, 70));
    47             char c = words.charAt(r(0, words.length()));
    48             g.drawString(String.valueOf(c), 40 + i * 60, r(40, HEIGHT - 40));
    49         }
    50     }
    51 
    52     // 画干扰线
    53     public static void generateLine() {
    54         for (int i = 0; i < 25; i++) {
    55             g.setColor(new Color(r(0, 255), r(0, 255), r(0, 255)));
    56             g.drawLine(r(0, WIDTH), r(0, HEIGHT), r(0, WIDTH), r(0, HEIGHT));
    57         }
    58     }
    59 
    60     // 将图片从内存输出到硬盘
    61     public static void save() throws IOException {
    62         File file = new File("f:/1.png");
    63         ImageIO.write(bi, "png", file);
    64         System.out.println("保存完成!");
    65     }
    66 
    67     // 测试
    68     public static void main(String[] args) throws IOException {
    69         generateBg();
    70         generateNum();
    71         generateLine();
    72         save();
    73     }
    74 }

    三:生成验证码图片

    以上代码均已经验证!

  • 相关阅读:
    RabbitMQ安装
    基于Linux的校园网破解思路和方法
    网络-0001-常见传输介质
    友情链接
    linux简史
    计算机的发展简史
    ArrayList&LinkedList&Vector区别
    Adobe Flash Player PPAPI 32.0.0.330
    ntoskrnl.exe导致蓝屏解决方法
    Git常用命令
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5690025.html
Copyright © 2011-2022 走看看