java 生成圖片驗證碼 工具類


package utils;



import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class CodeUtils {
    //得到隨機數
    private static char[] chars = "abdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY3456789".toCharArray();
    private static Random random = new Random();
    private static String getCode(int length){
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<length;i++){
            sb.append(chars[random.nextInt(chars.length)]);
        }
        return sb.toString();
    }
    
    /*
     * @說明: 設計驗證碼並寫出圖片文件
     */
    public static void createCode(HttpServletRequest req,HttpServletResponse resp){
        try {
            //1.創建畫布
            BufferedImage bufferedImage = new BufferedImage(120, 34, BufferedImage.TYPE_INT_RGB);
            //2.創建畫筆
            Graphics2D graphics2d = bufferedImage.createGraphics();
            //6.設置背景顏色  , 先設置畫筆顏色  ,在把畫布塗滿
            graphics2d.setColor(new Color(249, 250, 108));
            //7.塗滿畫布
            graphics2d.fillRect(0, 0, 120, 34);
            //8.更新畫筆顏色
            graphics2d.setColor(new Color(62, 128, 27));
            //9.設置字體
            graphics2d.setFont(new Font("Dope Crisis", Font.PLAIN, 40));
            String code = getCode(4);
            //12.保存到sesssion中
            HttpSession session=req.getSession();
            session.setAttribute("code", code);
            session.setMaxInactiveInterval(1000);
            //3.寫字
            graphics2d.drawString(code, 25,30);
            //4.收筆
            graphics2d.dispose();
            //5.保存到服務器上
            ImageIO.write(bufferedImage, "jpg", resp.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) throws Exception {
        //1.創建畫布
        BufferedImage bufferedImage = new BufferedImage(120, 34, BufferedImage.TYPE_INT_RGB);
        //2.創建畫筆
        Graphics2D graphics2d = bufferedImage.createGraphics();
        //6.設置背景顏色  , 先設置畫筆顏色  ,在把畫布塗滿
        graphics2d.setColor(new Color(20, 123, 228));
        //7.塗滿畫布
        graphics2d.fillRect(0, 0, 120, 34);
        //8.更新畫筆顏色
        graphics2d.setColor(new Color(246, 129, 50));
        //9.設置字體
        graphics2d.setFont(new Font("Dope Crisis", Font.PLAIN, 40));
        String num = getCode(4);
        //3.寫字
        graphics2d.drawString(num, 25,30);
        //4.收筆
        graphics2d.dispose();
        //5.保存到硬盤上
        ImageIO.write(bufferedImage, "jpg", new File("c:\\abc.jpg"));
    }
    //11.保存到服務器上
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM