1.  1 package cn.gp.tools;
  2. import java.awt.*;
  3. import java.awt.image.BufferedImage;
  4. import java.io.*;
  5. import java.util.Random;
  6. import javax.imageio.ImageIO;
  7. /**
  8. * int width = 70, height = 30;
  9. * 验证码的w=70 h=30 用Label来接收
  10. * @author 小风微灵
  11. *
  12. */
  13. public class ValidationCode {
  14.  
  15. /**
  16. * 获取随机颜色值
  17. * @param minColor
  18. * @param maxColor
  19. * @return
  20. */
  21. private static Color getRandomColor(int minColor, int maxColor) {
  22.  
  23. Random random = new Random();
  24. // 保存minColor最大不会超过255
  25. if (minColor > 255)
  26. minColor = 255;
  27. // 保存minColor最大不会超过255
  28. if (maxColor > 255)
  29. maxColor = 255;
  30. // 获得红色的随机颜色值
  31. int red = minColor + random.nextInt(maxColor - minColor);
  32. // 获得绿色的随机颜色值
  33. int green = minColor + random.nextInt(maxColor - minColor);
  34. // 获得蓝色的随机颜色值
  35. int blue = minColor + random.nextInt(maxColor - minColor);
  36. return new Color(red, green, blue);
  37.  
  38. }
  39.  
  40. public static String getValidationCode() throws IOException {
  41.  
  42. // 用于保存最后随机生成的验证码
  43. StringBuilder validationCode = new StringBuilder();
  44.  
  45. try {
  46.  
  47. // 设置图形验证码的长和宽(图形的大小)
  48. int width = 70, height = 30;
  49. BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  50. Graphics g = image.getGraphics();// 获得用于输出文字的Graphics对象
  51. Random random = new Random();
  52. g.setColor(getRandomColor(180, 250));// 随机设置要填充的颜色
  53. g.fillRect(0, 0, width, height);// 填充图形背景
  54. // 设置初始字体
  55. g.setFont(new Font("Times New Roman", Font.ITALIC, height));
  56. g.setColor(getRandomColor(120, 180));// 随机设置字体颜色
  57.  
  58. //干扰线
  59. for(int i=0;i<155;i++){
  60. int x=random.nextInt(width);
  61. int y=random.nextInt(height);
  62. int x1=random.nextInt(width);
  63. int y1=random.nextInt(height);
  64. g.drawLine(x, y, x+x1, y+y1);
  65. }
  66.  
  67. // 随机生成4个验证码
  68. for (int i = 0; i < 4; i++) {
  69. // 随机设置当前验证码的字符的字体
  70. g.setFont(Constant.fonts[RandomUtil.getRandomInt(Constant.fonts.length-1)]);
  71. // 随机获得当前验证码的字符串
  72. String code=Constant.srcStrings[RandomUtil.getRandomInt(61)];
  73. validationCode.append(code);
  74. // 随机设置当前验证码字符的颜色
  75. g.setColor(getRandomColor(10, 100));
  76. // 在图形上输出验证码字符,x和y都是随机生成的
  77. g.drawString(code, 16 * i + random.nextInt(7), height - random.nextInt(6));
  78. }
  79. //名称重置
  80.  
  81. String path=ImageUtil.getProgramPath();
  82.  
  83. File file = new File(path+"validates/validatecode"+(++Constant.count)+".jpg");
  84. ImageIO.write(image, "jpg", file);
  85.  
  86. //删除旧 的验证图片
  87. File file2=new File(path+"validates/validatecode"+(Constant.count-1)+".jpg");
  88. file2.delete();
  89.  
  90. g.dispose();
  91.  
  92. } catch (Exception e){
  93. e.printStackTrace();
  94. }
  95. return validationCode.toString();
  96. }
  97.  
  98. }

Java-生成验证码图片(自定义内容,尺寸,路径)的更多相关文章

  1. Java 生成验证码图片

    生成验证码图片并对提交的输入进行验证 // HttpServletResponse常见应用——生成验证码 // 利用BufferedImage类生产随机图片 public static final i ...

  2. java生成验证码图片

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  3. java web,生成验证码图片的技术

    偶然知道原来有些网站的验证码图片都是随机生成的,后来听人讲了一下,就做了这个小例子 生成图片,绘制背景,数字,干扰线用到了java.awt包,主要使用BufferedImage来生成图片,然后使用Gr ...

  4. springboot搭建项目,实现Java生成随机图片验证码。

    这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...

  5. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  6. java web 学习九(通过servlet生成验证码图片)

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

  7. Java Web学习总结(6)——通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...

  8. 【开发技术】Java生成验证码

    Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...

  9. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

  10. javaweb学习总结(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

随机推荐

  1. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

    卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...

  2. 2015第44周五Java集群技术(转)

    从http://blog.csdn.net/cdh1213/article/details/21443239上看到这篇文章,感觉很不错,找好久没找到中文出处,最早看是从http://www.these ...

  3. MyEclipse中导入Spring 4.0源码

    http://www.cnblogs.com/shi-blog/p/4132183.html

  4. 关于OC头文件互相引用的问题

    在OC中头文件互相引用是很常见的一件事,如: A的头文件#import "B.h" 而B的头文件#import "A.h" 这个时候就会出现意想不到的问题.系统 ...

  5. Shell上传文件到ftp

    写一个shell文件,将给定的文件上传到指定的ftp. 代码如下: #!/bin/bash #用来将文件上传到ftp,输入参数:文件名(包括路径).ftp的IP.ftp的端口.用户名.密码 ip=$ ...

  6. oracle DG 主备切换语句整理

    今日花了一下午时间进行了Oracle DataGuard的切换练习,参考了网上好多文章,最后将一些语句进行摘录,以备以后查询使用.之后有时间会带来Oracle DG的搭建和切换全过程文章. DataG ...

  7. 【设计模式 - 18】之备忘录模式(Memento)

    1      模式简介 备忘录模式的定义: 备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象,用作"后悔药",即取消上次操作或返回到以前的某个版本. 备忘录模式的应用实例 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用 我相信目前国内富文本编辑器中KindEditor 属于前 ...

  9. leetcode-WordLadder

    Word Ladder Total Accepted: 10243 Total Submissions: 58160My Submissions Given two words (start and  ...

  10. java实现渐变效果工具

    [html] view plain copy package gradient; import java.awt.Color; import java.awt.Dimension; import ja ...