package com.flf.controller; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.font.FontRenderContext; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.flf.util.Const; /** * @author Administrator * 验证码生成类 */ @Controller @RequestMapping("/code") public class SecCodeController { @RequestMapping public void generate(HttpSession session,HttpServletResponse response){ ByteArrayOutputStream output = new ByteArrayOutputStream(); String code = drawImg(output); session.setAttribute(Const.SESSION_SECURITY_CODE, code); //放入session //System.out.println(session.getAttribute(Const.SESSION_SECURITY_CODE)); try { ServletOutputStream out = response.getOutputStream(); output.writeTo(out); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private String drawImg(ByteArrayOutputStream output){ String code = ""; for(int i=0; i<4; i++){ code += randomChar(); } int width = 70; int height = 25; BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR); Font font = new Font("Times New Roman",Font.PLAIN,20); Graphics2D g = bi.createGraphics(); g.setFont(font); Color color = new Color(66,2,82); g.setColor(color); g.setBackground(new Color(226,226,240)); g.clearRect(0, 0, width, height); FontRenderContext context = g.getFontRenderContext(); Rectangle2D bounds = font.getStringBounds(code, context); double x = (width - bounds.getWidth()) / 2; double y = (height - bounds.getHeight()) / 2; double ascent = bounds.getY(); double baseY = y - ascent; g.drawString(code, (int)x, (int)baseY); g.dispose(); try { ImageIO.write(bi, "jpg", output); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return code; } private char randomChar(){ Random r = new Random(); String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789"; return s.charAt(r.nextInt(s.length())); } }
最近下载更多
PISCESPLUS LV4
9月3日
微信网友_6906962132258816 LV7
4月21日
2036495585 LV9
2023年9月25日
what_the_fo LV5
2023年4月7日
微信网友_6248713511227392 LV11
2022年12月5日
2273117187 LV5
2022年6月15日
Start1 LV15
2022年3月8日
ssh123 LV10
2021年7月5日
gamal233 LV5
2021年6月23日
wangwenzhong LV9
2021年5月7日
最近浏览更多
PISCESPLUS LV4
9月3日
微信网友_6906962132258816 LV7
4月21日
WBelong LV8
2023年12月26日
2036495585 LV9
2023年9月25日
多加两块钱 LV4
2023年6月14日
1379585889 LV11
2023年6月7日
what_the_fo LV5
2023年4月7日
zhexiu
2023年1月15日
暂无贡献等级
微信网友_6248713511227392 LV11
2022年12月5日
adnawda
2022年11月27日
暂无贡献等级