生成随机验证码及图片

package org.easyinlab.overall.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;


public class ImageUtil {
    //验证码字符集
//    private static final char[] chars={
//            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a','b','c','d','e',
//            'f','g','h','i','m','n','o','p','q','r','s','t','u','v','w','h','y','z',
//            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
//            'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
//    };
    private static final char[] chars={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
    
    //字符数量
    private static final int SIZE=4;
    //干扰线数量
    private static final int LINES=5;
    //宽度
    private static final int WIDTH=100;
    //高度
    private static final int HEIGHT=50;
    //字体大小
    private static final int FONT_SIZE=40;

    private static final int[] String = null;
    /**
     * 生成随机验证码及图片
     */
    public static Object[] createImage(){
        StringBuffer sb=new StringBuffer();
        //1.创建空白图片
        BufferedImage image=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
        //2.获取图片画笔
        Graphics graphics=image.getGraphics();
        //3.设置画笔颜色
        graphics.setColor(new Color(230, 240, 244));
        //4.绘制矩形背景
        graphics.fillRect(0, 0, WIDTH, HEIGHT);
        //5.画随机字符
        Random ran=new Random();
        for(int i=0;i<SIZE;i++){
            //取随机字符索引
            int n=ran.nextInt(chars.length);
            //设置随机颜色
            graphics.setColor(getRandomColor());
            //设置字体大小
            graphics.setFont(new Font(null,Font.BOLD+Font.ITALIC,FONT_SIZE));
            //画字符
            graphics.drawString(chars[n]+"",i*WIDTH/SIZE,getRandomDraw());
            //记录字符
            sb.append(chars[n]);
        }
//        //6.画干扰线
//        for(int i=0;i<LINES;i++){
//            //设置随机颜色
//            graphics.setColor(getRandomColor());
//            //随机划线
//            graphics.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT), ran.nextInt(WIDTH), ran.nextInt(HEIGHT));
//        }
        //7.返回验证码和图片
        return new Object[]{sb.toString(),image};
    }
    /*
     * 随机取色
     */
    private static Color getRandomColor() {
        Random ran=new Random();
        Color color=new Color(ran.nextInt(256),ran.nextInt(256),ran.nextInt(256));
        return color;
    }
    private static int getRandomDraw(){
        Random ran= new Random();
        int place=30+ran.nextInt(20);
        return place;
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值