使用java仿Servlet生成验证码

来源:互联网 发布:linux特点 编辑:程序博客网 时间:2024/05/18 13:12

实现原理:使用BufferedImage对象的Graphics来进行绘制,然后输出成一张图片进行保存

实现代码及详解:

public class validateCode{    private static Random rand = new Random();    public static void main(String[] args){        int val1 = rand.nextInt(9);        int val2 = rand.nextInt(9);        int val3 = rand.nextInt(9);        int val4 = rand.nextInt(9);        String val = val1 + " " + val2 + " " + val3 + " " + val4'        BufferedImage buf = drawImage(val);        //将最终的图片保存到D://cheng.png下        ImageIO.write(buf,"png",new File("D://cheng.png");    }    public static BufferedImage drawImage(String code){        int height = 30;        int width = 60;        BufferedImage buf = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);        Graphics2D gs = buf.createGraphics();        gs.setBackground(Color.black);        gs.drawRect(0,0,width,height);          //绘制随机干扰线        int total = 100;        drawRandLine(gs,total);        //绘制验证码        Font font = new Font("行楷",Font.BOLD,20);        gs.setFont(font);        gs.setColor(getRandColor(155,255));        gs.drawString(code,5,20);        return buf;    }    public static void drawRandLine(Graphics2D gs,int total){        for(int i=0; i<total; i++){            int x1 = rand.nextInt(width);            int x2 = rand.nextInt(width);            int y1 = rand.nextInt(height);            int y2 = rand.nextInt(height);            //设置随机颜色            gs.setColor(getRandColor(0,155));            gs.drawLine(x1,y1,x2,y2);        }       }    public static Color getRandColor(int from,int to){        int r = from + rand.nextInt(to-from);        int g = from + rand.nextInt(to-from);        int b = from + rand.nextInt(to-from);        return new Color(r,g,b);        }

最终实现效果图
这里写图片描述

0 0
原创粉丝点击