您当前的位置: 首页 >  Java

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

生成最简单的验证码图片的Java代码

liaowenxiong 发布时间:2022-03-25 11:29:29 ,浏览量:2

后端代码:

package priv.lwx.servlet.sl.web;
/**
 * description
 *
 * @author liaowenxiong
 * @date 2022/3/25 09:56
 */


import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

@WebServlet("/PlainCheckCodeServlet")
public class PlainCheckCodeServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("image/png");
    // 在内存中构造一个图像对象
    BufferedImage image = new BufferedImage(45, 20, BufferedImage.TYPE_INT_RGB);
    // 创建随机数对象
    Random r = new Random();
    // 获得画笔,并且转换成2D画笔Graphics2D,因为Graphics2D可以去锯齿,Graphics2D是Graphics的子类
    Graphics2D g = (Graphics2D)image.getGraphics();
    // 随机设置画笔的颜色
    // g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
    g.setColor(Color.BLUE);
    // 填充矩形,其实就是填充背景色
    g.fillRect(0, 0, 60, 20);
    // 设置画笔的颜色
    g.setColor(new Color(0, 0, 0));
    // 设置字体、样式、大小
    Font font = new Font("宋体", 0, 10);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿
    g.setFont(font);
    // 随机获取0~99998之间的数值
    String number = String.valueOf(r.nextInt(99999));
    // 把获取到的数值绘入图片对象中
    g.drawString(number, 5, 15);
    // 获得字节输出流,因为要输出的是图像压缩之后的字节数组,所以,不能用 PrintWriter。
    OutputStream os = response.getOutputStream();
    // 获取图片压缩编码器
    // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);// 这是Sun公司私有的API
    // encoder.encode(image);
    ImageIO.write(image, "png", os);
  }
}

前端代码:




    注册
    
    
    
        window.onload = function () {
            var image = document.getElementById("checkCode");
            var rb = document.getElementById("rb");
            image.onclick = function () {
                image.src = "plain_check_code?" + Math.random();
            };
            rb.onclick = function () {
                image.src = "plain_check_code?" + Math.random();
            }
        };

    



    
        
            
                
                    2009/11/20
                    
                
            
            
                
                    main
                
            
            
            
        
        
            
            
            
                注册
            
            
                
                    
                        
                            用户名:
                        
                        
                            
                            
                            
                                
                            
                        
                    
                    
                        
                            真实姓名:
                        
                        
                            
                        
                    
                    
                        
                            密码:
                        
                        
                            
                        
                    
                    
                        
                            性别:
                        
                        
                            男
                            
                            女
                            
                        
                    

                    
                        
                            验证码:
                        
                        
                            
                            
                            换一张
                        
                    
                
                
                    
                
            
        
    
    
        
            ABC@126.com
        
    



关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.1408s