• 验证码


    话不多说 直接上代码 里面有详细的注释,新手可以进来看看,有不对的或者可以改进的地方 希望您指正!

    package checkCode;

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

    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;

    public class CheckCode extends HttpServlet{

        /**
         * @author zx
         */
        private static final long serialVersionUID = 1L;

        @Override
        public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
            int width = 100;
            int height = 40;
            BufferedImage bfi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            
            Graphics g = bfi.getGraphics();//获得画笔
            g.setColor(Color.WHITE);//设置背景颜色
            g.fillRect(0, 0, width, height);//画矩形框
            
            String str = "";//保存随机数
            Random r = new Random();
            
            g.setFont(new Font("a",Font.BOLD,20));//设置字体
            
            for(int i=0;i<4;i++){
                int num = r.nextInt(10);//生成十以内的随机数
                g.setColor(new Color(r.nextInt(255),r.nextInt(255) ,r.nextInt(255)  ));
                g.drawString(""+num, 20+i, 20+r.nextInt(10));//20+r 表示 每一位数字之间的间隔,自己调试出位置
                                                             //nextInt(10) 数字离中心位置的上下波动距离
            
            }
             //画干扰线
            for(int i=0;i<10;i++){
                g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255) ));//设置颜色
                g.drawLine(r.nextInt(100), r.nextInt(40), r.nextInt(100), r.nextInt(40));
            }
            
            g.dispose();//这是最重要的 ,不愕然显示不出来哦
            
            ImageIO.write(bfi, "jpeg", response.getOutputStream());//图片用字节流,直接得到
            
        }
     
        
    }

  • 相关阅读:
    tigerVNC远程桌面,跨内网
    Nutch 二次开发之parse正文内容
    在一个字符串中找到第一个仅仅出现一次的字符。
    图像处理之霍夫变换(直线检測算法)
    EJB3.0开发环境的搭建
    uestc 250 数位dp(水)
    Matlab画图-非常具体,非常全面
    高性能I/O设计模式Reactor和Proactor
    leetcode第一刷_Path Sum II
    PreTranslateMessage作用和用法
  • 原文地址:https://www.cnblogs.com/Zhong-Xin/p/5475011.html
Copyright © 2020-2023  润新知