• ImageUtil(验证码数据生成工具类)


    登录界面时,常常会使用到验证码图片生成,程序如下:

    package util;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Random;
    import javax.imageio.ImageIO;
    
    public final class ImageUtil {
    	
    	// 验证码字符集
    	private static final char[] chars = { 
    		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 
    		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 
    		'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    	// 字符数量
    	private static final int SIZE = 4;
    	// 干扰线数量
    	private static final int LINES = 5;
    	// 宽度
    	private static final int WIDTH = 80;
    	// 高度
    	private static final int HEIGHT = 40;
    	// 字体大小
    	private static final int FONT_SIZE = 30;
    
    	/**
    	 * 生成随机验证码及图片
    	 */
    	public static Object[] createImage() {
    		StringBuffer sb = new StringBuffer();
    		// 1.创建空白图片
    		BufferedImage image = new BufferedImage(
    			WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
    		// 2.获取图片画笔
    		Graphics graphic = image.getGraphics();
    		// 3.设置画笔颜色
    		graphic.setColor(Color.LIGHT_GRAY);
    		// 4.绘制矩形背景
    		graphic.fillRect(0, 0, WIDTH, HEIGHT);
    		// 5.画随机字符
    		Random ran = new Random();
    		for (int i = 0; i <SIZE; i++) {
    			// 取随机字符索引
    			int n = ran.nextInt(chars.length);
    			// 设置随机颜色
    			graphic.setColor(getRandomColor());
    			// 设置字体大小
    			graphic.setFont(new Font(
    				null, Font.BOLD + Font.ITALIC, FONT_SIZE));
    			// 画字符
    			graphic.drawString(
    				chars[n] + "", i * WIDTH / SIZE, HEIGHT / 2);
    			// 记录字符
    			sb.append(chars[n]);
    		}
    		// 6.画干扰线
    		for (int i = 0; i < LINES; i++) {
    			// 设置随机颜色
    			graphic.setColor(getRandomColor());
    			// 随机画线
    			graphic.drawLine(ran.nextInt(WIDTH), ran.nextInt(HEIGHT),
    					ran.nextInt(WIDTH), ran.nextInt(HEIGHT));
    		}
    		// 7.返回验证码和图片
    		return new Object[]{sb.toString(), image};
    	}
    
    	/**
    	 * 随机取色
    	 */
    	public static Color getRandomColor() {
    		Random ran = new Random();
    		Color color = new Color(ran.nextInt(256), 
    				ran.nextInt(256), ran.nextInt(256));
    		return color;
    	}
    	
    	public static void main(String[] args) throws IOException {
    		Object[] objs = createImage();
    		BufferedImage image = (BufferedImage) objs[1];
    		OutputStream os = new FileOutputStream("d:/1.jpg");
    		ImageIO.write(image, "jpeg", os);
    		os.close();
    	}
    
    }

        

      

  • 相关阅读:
    memcached基础与配置详解
    最小化安装CentOS基础命令
    源码编译redis及解决三个开机告警问题
    HAProxy之一----HAPproxy配置参数详解
    HAProxy之二----HAProxy实现高级负载均衡实战和ACL控制
    6 SQL语言——distinct去重
    5 SQL语言——连接符
    04 Oracle Sql语言API
    03 Oracle——用户密码忘记重置
    02 Oracle——账号管理
  • 原文地址:https://www.cnblogs.com/gangbalei/p/5898187.html
Copyright © 2020-2023  润新知