zoukankan      html  css  js  c++  java
  • Java生成图片验证码2

    Photo类

    package com.baowei.utils;
    
    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.http.HttpServletResponse;
    
    public class Photo {
    
        private static final int width = 120;
        private static final int height = 25;
        private HttpServletResponse response;
    
        private String randomData = "";
    
        public Photo(HttpServletResponse response) {
            this.response = response;
        }
    
        public void createImage() throws IOException {
    
            // 1、在内存里面创建一个图片
            BufferedImage bimage = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            // 2.1得到图片
            Graphics g = bimage.getGraphics();
            // 2.2设置图片的背景颜色
            setBackground(g);
            // 3、设置图片边框
            setBorder(g);
            // 4、设置图片干扰线
            setLine(g);
            // 5、向图片写数据
            setRandomData(g);
            // 6、将图片写给客户机
            response.setContentType("image/jpeg");
            ImageIO.write(bimage, "jpg", response.getOutputStream());
        }
    
        public void setBackground(Graphics g) {
            Color color = g.getColor();
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, width, height);
            g.setColor(color);
    
        }
    
        public void setBorder(Graphics g) {
    
            Color color = g.getColor();
            g.setColor(Color.BLUE);
            g.drawRect(1, 1, width - 2, height - 2);
            g.setColor(color);
    
        }
    
        public void setLine(Graphics g) {
    
            for (int i = 0; i < 4; i++) {
                // 此处获得到的x,y应该与上面的图片的宽高关联起来
                int x1 = new Random().nextInt(width);
                int x2 = new Random().nextInt(width);
                int y1 = new Random().nextInt(height);
                int y2 = new Random().nextInt(height);
                Color color = g.getColor();
                g.setColor(Color.GREEN);
                g.drawLine(x1, y1, x2, y2);
                g.setColor(color);
            }
    
        }
    
        public void setRandomData(Graphics g) {
    
            // 获取随机的数据
            // String data = "";
            for (int i = 0; i < 4; i++) {
                randomData += new Random().nextInt(10) + " ";
            }
    
            // 设置数据的字体和颜色
            Color color = g.getColor();
            g.setColor(Color.RED);
    
            g.setFont(new Font("宋体", Font.BOLD, 20));
    
            g.drawString(randomData, 20, 20);
    
            g.setColor(color);
    
        }
        
        public String getRandomData() {
    
            String data[] = randomData.split(" ");
            String returnData = "";
            for (int i = 0; i < data.length; i++) {
                returnData += data[i];
            }
            
            return returnData;
        }
    
    
    }

    Demo01测试用的servlet

    package com.baowei.servlet;
    
    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.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import com.baowei.utils.Photo;
    
    public class Demo01 extends HttpServlet {
    
        
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            doPost(request, response);
    
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType("image/jpeg");
    
            Photo pt = new Photo(response);
            pt.createImage();
            System.out.println(pt.getRandomData());
            String data = pt.getRandomData();
    
            // 存入会话session
            //HttpSession session = request.getSession(true);
            //session.setAttribute("data", data);
            getServletContext().setAttribute("data", data);
    
        }
    
    }
  • 相关阅读:
    四十九、在SAP中查看程序资源结构对象
    四十八、在SAP中函数参数的使用
    四十七、在SAP中,把功能区块整合成一个函数,通过调用函数的办法使代码简洁明了
    四十六、SAP的Message中E和W区别
    四十五、SAP中Message的管理
    四十四、在SAP中冻结第一行表头
    四十三、在SAP中初始化勾选值
    四十二、在SAP中添加单选框
    四十一、在SAP中添加多条件选择框
    四十、SAP中CASE语句用法
  • 原文地址:https://www.cnblogs.com/zhangbaowei/p/4673320.html
Copyright © 2011-2022 走看看