Java生成图片验证码

在日常我们在登录或者注册的时候,网页上会出现验证码让我们填写,其实利用jdk提供给我们的工具类完全可以模拟出来一个生成验证码图片的功能。

package util;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

public class image {
    public static int[] ran() {
        //设置图片宽度和高度
        int width = 150;
        int height = 60;
        //干扰线条数
        int lines = 10;
//        验证码数组
        int[] random = new int[4];
        Random r = new Random();
        BufferedImage b = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = b.getGraphics();
        g.setFont(new Font("宋体", Font.BOLD, 30));
        for (int i = 0; i < 4; i++) {
            int number = r.nextInt(10);
            random[i] = number;
            int y = 10+r.nextInt(40);// 10~40范围内的一个整数,作为y坐标
            //随机颜色,RGB模式
            Color c = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
            g.setColor(c);
//            g.drawString("" + a, 5 + i * width / 4, y);
            //写验证码
            g.drawString(Integer.toString(number), 5 + i * width / 4, y);
        }
        for (int i = 0; i < lines; i++) {
            //设置干扰线颜色
            Color c = new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255));
            g.setColor(c);
            g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
        }
        try {
            //清空缓冲
            g.dispose();
            //向文件中写入
            ImageIO.write(b, "jpg", new File("E:\\IntelliJ IDEA\\mail\\web\\imagecode\\test.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return random;
    }

    //测试
    public static void main(String[] args) {
        ran();
    }
}

运行之后生成的图片:


这样我们在方法中用一个数组存了四位的验证码,在后台判断用户输入的和数组中的元素是否一致,就可以实现验证了。

posted @ 2017-11-19 12:21  In_new  阅读(273)  评论(0编辑  收藏  举报