• 验证码


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

    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());//图片用字节流,直接得到
            
        }
     
        
    }

  • 相关阅读:
    AC自动机模板
    HDU 3065 病毒侵袭持续中(AC自动机)
    HDU 2896 病毒侵袭(AC自动机)
    HDU 2222 Keywords Search (AC自动机模板题)
    HDU 1113 Word Amalgamation
    HDU 1171 Big Event in HDU(母函数或01背包)
    37.Qt网络与通信
    2.Matlab数值数组及其运算
    36.QT地图
    35.QT蝴蝶飞舞
  • 原文地址:https://www.cnblogs.com/Zhong-Xin/p/5475011.html
Copyright © 2020-2023  润新知