`
yangyi
  • 浏览: 112799 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数字验证码小图生成程序

    博客分类:
  • Java
阅读更多
做了一个登陆验证码的生成小程序,或许对大家有用。支持背景图和文字旋转
java 代码
 
  1. import java.awt.Color;  
  2. import java.awt.Font;  
  3. import java.awt.Graphics2D;  
  4. import java.awt.image.BufferedImage;  
  5. import java.io.File;  
  6. import java.io.IOException;  
  7. import java.util.Date;  
  8. import java.util.Random;  
  9.   
  10. import javax.imageio.ImageIO;  
  11. import javax.servlet.ServletException;  
  12. import javax.servlet.http.HttpServletRequest;  
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. import com.sun.image.codec.jpeg.JPEGCodec;  
  16. import com.sun.image.codec.jpeg.JPEGEncodeParam;  
  17. import com.sun.image.codec.jpeg.JPEGImageEncoder;  
  18.   
  19. /** 
  20. * Servlet implementation class for Servlet: ImageGenerator 
  21. * 
  22. */  
  23. public class ImageGenerator extends javax.servlet.http.HttpServlet implements  
  24. javax.servlet.Servlet {  
  25. protected void doGet(HttpServletRequest request,  
  26. HttpServletResponse response) throws ServletException, IOException {  
  27. response.setContentType("image/jpeg"); // 必须设置ContentType为image/jpeg  
  28. int length = 4// 设置默认生成4个数字  
  29. Date d = new Date();  
  30. long lseed = d.getTime();  
  31. Random r = new Random(lseed); // 设置随机种子  
  32. if (request.getParameter("length") != null) {  
  33. try {  
  34. length = Integer.parseInt(request.getParameter("length"));  
  35. catch (NumberFormatException e) {  
  36. }  
  37. }  
  38.   
  39. // 可以在此加入保存验证码的代码  
  40. // 创建内存图像  
  41. BufferedImage bi = ImageIO.read(new File(this.getServletContext().getRealPath("./imgc.jpg")));  
  42. //可以在上面读入一个背景图,然后在背景图上写数字  
  43.   
  44. Graphics2D g = bi.createGraphics();  
  45. g.setColor(Color.CYAN);  
  46. g.setFont(new Font(null, Font.BOLD, 15));  
  47. //旋转  
  48. double rot;  
  49.   
  50. for (int i = 0; i < length; i++) {  
  51. g.drawString(String.valueOf(r.nextInt(9)), bi.getWidth()/4 + i * 15, bi.getHeight()/2);  
  52. rot = r.nextDouble() * 0.1;  
  53. if(r.nextBoolean())  
  54. rot = -1 * rot;  
  55. g.rotate(rot);  
  56. }  
  57.   
  58. try {  
  59. // 使用JPEG编码,输出到response的输出流  
  60. JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response  
  61. .getOutputStream());  
  62. JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);  
  63. param.setQuality(1.0f, false);  
  64. encoder.setJPEGEncodeParam(param);  
  65. encoder.encode(bi);  
  66. catch (Exception ex) {  
  67. }  
  68. }  
  69. }  

自己配置一下背景图片的位置就可以了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics