Java-生成验证码图片(自定义内容,尺寸,路径)
1 package cn.gp.tools;- import java.awt.*;
- import java.awt.image.BufferedImage;
- import java.io.*;
- import java.util.Random;
- import javax.imageio.ImageIO;
- /**
- * int width = 70, height = 30;
- * 验证码的w=70 h=30 用Label来接收
- * @author 小风微灵
- *
- */
- public class ValidationCode {
- /**
- * 获取随机颜色值
- * @param minColor
- * @param maxColor
- * @return
- */
- private static Color getRandomColor(int minColor, int maxColor) {
- Random random = new Random();
- // 保存minColor最大不会超过255
- if (minColor > 255)
- minColor = 255;
- // 保存minColor最大不会超过255
- if (maxColor > 255)
- maxColor = 255;
- // 获得红色的随机颜色值
- int red = minColor + random.nextInt(maxColor - minColor);
- // 获得绿色的随机颜色值
- int green = minColor + random.nextInt(maxColor - minColor);
- // 获得蓝色的随机颜色值
- int blue = minColor + random.nextInt(maxColor - minColor);
- return new Color(red, green, blue);
- }
- public static String getValidationCode() throws IOException {
- // 用于保存最后随机生成的验证码
- StringBuilder validationCode = new StringBuilder();
- try {
- // 设置图形验证码的长和宽(图形的大小)
- int width = 70, height = 30;
- BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
- Graphics g = image.getGraphics();// 获得用于输出文字的Graphics对象
- Random random = new Random();
- g.setColor(getRandomColor(180, 250));// 随机设置要填充的颜色
- g.fillRect(0, 0, width, height);// 填充图形背景
- // 设置初始字体
- g.setFont(new Font("Times New Roman", Font.ITALIC, height));
- g.setColor(getRandomColor(120, 180));// 随机设置字体颜色
- //干扰线
- for(int i=0;i<155;i++){
- int x=random.nextInt(width);
- int y=random.nextInt(height);
- int x1=random.nextInt(width);
- int y1=random.nextInt(height);
- g.drawLine(x, y, x+x1, y+y1);
- }
- // 随机生成4个验证码
- for (int i = 0; i < 4; i++) {
- // 随机设置当前验证码的字符的字体
- g.setFont(Constant.fonts[RandomUtil.getRandomInt(Constant.fonts.length-1)]);
- // 随机获得当前验证码的字符串
- String code=Constant.srcStrings[RandomUtil.getRandomInt(61)];
- validationCode.append(code);
- // 随机设置当前验证码字符的颜色
- g.setColor(getRandomColor(10, 100));
- // 在图形上输出验证码字符,x和y都是随机生成的
- g.drawString(code, 16 * i + random.nextInt(7), height - random.nextInt(6));
- }
- //名称重置
- String path=ImageUtil.getProgramPath();
- File file = new File(path+"validates/validatecode"+(++Constant.count)+".jpg");
- ImageIO.write(image, "jpg", file);
- //删除旧 的验证图片
- File file2=new File(path+"validates/validatecode"+(Constant.count-1)+".jpg");
- file2.delete();
- g.dispose();
- } catch (Exception e){
- e.printStackTrace();
- }
- return validationCode.toString();
- }
- }
Java-生成验证码图片(自定义内容,尺寸,路径)的更多相关文章
- Java 生成验证码图片
生成验证码图片并对提交的输入进行验证 // HttpServletResponse常见应用——生成验证码 // 利用BufferedImage类生产随机图片 public static final i ...
- java生成验证码图片
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...
- java web,生成验证码图片的技术
偶然知道原来有些网站的验证码图片都是随机生成的,后来听人讲了一下,就做了这个小例子 生成图片,绘制背景,数字,干扰线用到了java.awt包,主要使用BufferedImage来生成图片,然后使用Gr ...
- springboot搭建项目,实现Java生成随机图片验证码。
这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...
- java web学习总结(九) -------------------通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- java web 学习九(通过servlet生成验证码图片)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- Java Web学习总结(6)——通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...
- 【开发技术】Java生成验证码
Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...
- JavaWeb---总结(九)通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl. ...
- javaweb学习总结(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
随机推荐
- 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)
卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│ 1.txt│ c语言经典案例效果图示.doc│ ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...
- 2015第44周五Java集群技术(转)
从http://blog.csdn.net/cdh1213/article/details/21443239上看到这篇文章,感觉很不错,找好久没找到中文出处,最早看是从http://www.these ...
- MyEclipse中导入Spring 4.0源码
http://www.cnblogs.com/shi-blog/p/4132183.html
- 关于OC头文件互相引用的问题
在OC中头文件互相引用是很常见的一件事,如: A的头文件#import "B.h" 而B的头文件#import "A.h" 这个时候就会出现意想不到的问题.系统 ...
- Shell上传文件到ftp
写一个shell文件,将给定的文件上传到指定的ftp. 代码如下: #!/bin/bash #用来将文件上传到ftp,输入参数:文件名(包括路径).ftp的IP.ftp的端口.用户名.密码 ip=$ ...
- oracle DG 主备切换语句整理
今日花了一下午时间进行了Oracle DataGuard的切换练习,参考了网上好多文章,最后将一些语句进行摘录,以备以后查询使用.之后有时间会带来Oracle DG的搭建和切换全过程文章. DataG ...
- 【设计模式 - 18】之备忘录模式(Memento)
1 模式简介 备忘录模式的定义: 备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象,用作"后悔药",即取消上次操作或返回到以前的某个版本. 备忘录模式的应用实例 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用 我相信目前国内富文本编辑器中KindEditor 属于前 ...
- leetcode-WordLadder
Word Ladder Total Accepted: 10243 Total Submissions: 58160My Submissions Given two words (start and ...
- java实现渐变效果工具
[html] view plain copy package gradient; import java.awt.Color; import java.awt.Dimension; import ja ...