java 验证码 源码_java 验证码生成源码
fontList = new ArrayList();
fontList.add(new Font("微软 雅黑", Font.LAYOUT_NO_START_CONTEXT, 30));// 可以设置斜体之类的
DefaultWordRenderer dwr = new DefaultWordRenderer(getRandomColor(), fontList);
// 加入多种颜色后会随机显示 字体空心
WordRenderer wr = dwr;
// 增加文本,默认为5个随机字符.
if (_text == null) {
builder.addText();
} else {
String[] ts = _text.split(",");
for (int i = 0; i < ts.length; i++) {
String[] ts1 = ts[i].split(":");
if ("chinese".equals(ts1[0])) {
builder.addText(new ChineseTextProducer(Integer.parseInt(ts1[1])), wr);
} else if ("number".equals(ts1[0])) {
// 这里没有0和1是为了避免歧义 和字母I和O
char[] numberChar = new char[] { '2', '3', '4', '5', '6', '7', '8' };
builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr);
} else if ("word".equals(ts1[0])) {
// 原理同上
char[] numberChar = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'm', 'n', 'p', 'r',
'w', 'x', 'y' };
builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr);
} else {
builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1])), wr);
}
}
}
// --------------添加背景-------------
// 设置背景渐进效果 以及颜色 form为开始颜色,to为结束颜色
// GradiatedBackgroundProducer gbp=new GradiatedBackgroundProducer();
// gbp.setFromColor(Color.yellow);
// gbp.setToColor(Color.red);
// 无渐进效果,只是填充背景颜色
// FlatColorBackgroundProducer fbp=new
// FlatColorBackgroundProducer(Color.red);
// 加入网纹--一般不会用
// SquigglesBackgroundProducer sbp=new SquigglesBackgroundProducer();
// 没发现有什么用,可能就是默认的
// TransparentBackgroundProducer tbp = new
// TransparentBackgroundProducer();
// builder.addBackground(gbp);
// ---------装饰字体---------------
// 字体边框齿轮效果 默认是3
builder.gimp(new BlockGimpyRenderer(1));
// 波纹渲染 相当于加粗
// builder.gimp(new RippleGimpyRenderer());
// 修剪--一般不会用
// builder.gimp(new ShearGimpyRenderer(Color.red));
// 加网--第一个参数是横线颜色,第二个参数是竖线颜色
// builder.gimp(new FishEyeGimpyRenderer(Color.red,Color.yellow));
// 加入阴影效果 默认3,75
// builder.gimp(new DropShadowGimpyRenderer());
// 创建对象
Captcha captcha = builder.build();
req.getSession().setAttribute("simpleCaptcha", captcha);
resp.setHeader("Cache-Control", "private,no-cache,no-store");
resp.setContentType("image/png");
try {
OutputStream os = resp.getOutputStream();
ImageIO.write(captcha.getImage(), "png", os);
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public Color getRandomColor() {
int n = RandomUtils.nextInt(100);
if (n % 3 == 1) {
return Color.RED;
} else if (n % 3 == 2) {
return Color.BLUE;
}
return Color.GREEN;
}
}
java 验证码 源码_java 验证码生成源码相关推荐
- java 转码_JAVA自带转码方式的学习
最近工作中遇到一个问题,由于海外系统环境默认采用UTF-8格式编码,以支持多语言环境.而国内系统由于只需要支持中英文,故默认采用GBK编码格式.因此当把海外环境生成的交易报告单发送给国内的报表系统时, ...
- php 生产一维码,透过 PHP 生成 一维码
通过 PHP 生成 一维码 此代码来自 http://www.nixiaofeng.com/110.html 13) die('条码长度不正确'); if (strlen($code) == 12) ...
- java 线程池 源码_java线程池源码分析
我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...
- java join 源码_java并发:join源码分析
join join join是Thread方法,它的作用是A线程中子线程B在运行之后调用了B.join(),A线程会阻塞直至B线程执行结束 join源码(只有继承Thread类才能使用) 基于open ...
- java source folder作用_java项目把源码放到folder里,不是source folder,这个java代码还能被调用吗?...
看到这个问题,真心觉得初学入门就用IDE真心不是一个好方法.IDE屏蔽了太多基础知识,比如Java是需要编译的,运行的是编译后的class文件.编译命令有编译参数,执行命令有执行命令的参数.还有环境变 ...
- Java绘画板源码_Java 绘图板 示例源码下载(画板)
Java 绘图板 示例源码下载(画板) java 2020-8-21 下载地址 https://www.codedown123.com/36795.html package minidrawpad; ...
- java单机版软件源码_Java五子棋单机版源码分享
初学JavaGUI编程,就写了一个小游戏–五子棋. 目前只实现了单机版,任何事情都是从简制作的,有问题请大牛们不吝指教啊. 此处的棋盘和棋子都未用图片,全部都是使用Java中的Graphics画出来的 ...
- java compareto源码_java中compareTo源码解析(String类型)
官网API(JDK13): 先上结论: 1.计算compareTo两边字符串的总长度(length()) 2.求出总长度中的最小值 3.如果长度相等,比较ASCII值相同,返回0 4.如果长度不相同, ...
- java接口源码_java collection接口源码
package java.util; /* * 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合有序,JDK不提供本接口的实现 ...
最新文章
- Logback日志使用详解
- python字符串与文本处理技巧(2):大小写敏感搜索、最短匹配、多行匹配、Unicode标准化
- m.2接口和nvme区别_透明款散热不好,那么ORICO 全铝NVMe固态硬盘盒了解一下?
- 借助 Cloud Toolkit 快速创建 Dubbo 工程
- connect.js源码解析
- 羊皮卷的故事-第十七章-羊皮卷之十
- java 缓存日志_Java日志缓存机制的实现(3)
- python基础--列表,元组
- 360 组织全局 HOOK 的 dll 加载
- @autowired注解 抽象类_Spring容器注解注入
- tbslog乱码转换_日文游戏乱码怎么办 乱码转换工具LocaleEmulator
- 旅游管理系统项目java设计_基于JSP的旅游管理系统设计与实现(MyEclipse,SQL)
- springmvc-带预览的异步上传图片功能
- jdk+jmeter下载安装教程
- vue 手机号正则表达式
- 经典路径规划算法分类概述(更新中)
- 【数学与算法】泰勒公式_线性化_雅各比矩阵_黑塞矩阵
- 2022南京商业贷款提前还款
- 优化策略5 Label Smoothing Regularization_LSR原理分析
- hive集群tez引擎执行任务卡住
热门文章
- 用ProFTPD构建FTP服务器
- Java基础-特殊数据类型:枚举
- 在GridView中的批量删除!
- 谭浩强C程序设计的课后习题答案
- IPIP地址、ipv4ipv6、子网掩码、网段计算、网络广播ID计算、默认网关、DNS服务器、DHCP服务器
- c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
- Python—UnicodeEncodeError: 'ascii' codec can't encode/decode characters
- Oracle起步——Oracle 11g安装配置
- ubuntu12.04LTS下eclipse indigo版配置opencv2.4.9
- java主键后四位顺序号_JAVA中取顺序号 (转)