生成验证码的java类详解编程语言

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.Random; 
  
//验证码 
public final class ImageUtil { 
    private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6", 
            "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", 
            "L", "M", "N", "P" }; 
    private static final int SIZE = 5;// 字符长度 
    private static final int LINES = 7;// 干扰线 
    private static final int WIDTH = 100; 
    private static final int HEIGHT = 50; 
    private static final int FONT_SIZE = 30;// 字体大小 
  
    public static Map<String, BufferedImage> createImage() { 
        StringBuffer sb = new StringBuffer(); 
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, 
                BufferedImage.TYPE_INT_RGB); 
        Graphics graphic = image.getGraphics(); 
        graphic.setColor(Color.LIGHT_GRAY); 
        graphic.fillRect(0, 0, WIDTH, HEIGHT); 
        Random ran = new Random(); 
        // 画随机字符 
        for (int i = 1; i <= SIZE; i++) { 
  
            int r = ran.nextInt(chars.length); 
            graphic.setColor(getRandomColor()); 
            graphic.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE)); 
            graphic.drawString(chars[r], (i - 1) * WIDTH / SIZE, HEIGHT / 2); 
            sb.append(chars[r]);// 将字符保存,存入Session 
        } 
        // 画干扰线 
        for (int i = 1; i <= LINES; i++) { 
            graphic.setColor(getRandomColor()); 
            graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT), 
                    ran.nextInt(WIDTH), ran.nextInt(HEIGHT)); 
        } 
        Map<String, BufferedImage> map = new HashMap<String, BufferedImage>(); 
        map.put(sb.toString(), image); 
        return map; 
    } 
  
    public static Color getRandomColor() { 
        Random ran = new Random(); 
        Color color = new Color(ran.nextInt(156), ran.nextInt(156), 
                ran.nextInt(156)); 
        return color; 
    } 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10176.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论