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())); } }
最近下载更多
XiaoSong888 LV3
1月10日
泓鼎168 LV20
2023年10月16日
wz520135 LV7
2022年11月5日
听着雨吹着风 LV9
2022年5月15日
叶柯宸 LV3
2022年5月10日
fengshengtian LV8
2022年4月21日
Start1 LV15
2022年3月8日
wanglinddad LV55
2021年12月30日
qq70081337 LV6
2021年8月28日
ssh123 LV10
2021年7月5日
最近浏览更多
18135724357
10月12日
暂无贡献等级
yyhrhv LV8
5月23日
13521878735 LV3
3月26日
XiaoSong888 LV3
1月10日
WBelong LV8
2023年12月26日
edpwyg LV14
2023年10月22日
泓鼎168 LV20
2023年10月16日
飞呀飞呀飞不放 LV7
2023年8月9日
gecongkai LV8
2023年6月22日
miluya
2023年6月13日
暂无贡献等级