package test.web.home.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.PrintStream; import java.util.Random; import javax.imageio.ImageIO; public abstract class RandomGraphic { private static int wordHeight = 10; private static int wordWidth = 15; private static int fontSize = 20; private static final int MAX_CHARCOUNT = 16; private static final int initypos = 5; private static final Color[] CHAR_COLOR = { Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA }; public static String GRAPHIC_JPEG = "JPEG"; public static String GRAPHIC_PNG = "PNG"; public static String draw(String charValue, String graphicFormat, OutputStream out) throws Exception { int charCount = charValue.length(); if ((charCount < 1) || (charCount > 16)) { throw new Exception("Invalid parameter charCount,charCount should between in 1 and 16"); } int w = (charCount + 2) * wordWidth; int h = wordHeight * 3; BufferedImage bi = new BufferedImage(w, h, 5); Graphics2D g = bi.createGraphics(); Color backColor = Color.WHITE; g.setBackground(backColor); g.fillRect(0, 0, w, h); g.setFont(new Font(null, 1, fontSize)); for (int i = 0; i < charCount; i++) { String c = charValue.substring(i, i + 1); Color color = CHAR_COLOR[randomInt(0, CHAR_COLOR.length)]; g.setColor(color); int xpos = (i + 1) * wordWidth; int ypos = randomInt(5 + wordHeight, 5 + wordHeight * 2); g.drawString(c, xpos, ypos); } g.dispose(); bi.flush(); ImageIO.write(bi, graphicFormat, out); out.close(); return charValue; } public static String randNumber(int charCount) { String charValue = ""; for (int i = 0; i < charCount; i++) { charValue = charValue + String.valueOf(randomInt(0, 10)); } return charValue; } public static String randAlpha(int charCount) { String charValue = ""; for (int i = 0; i < charCount; i++) { char c = (char)(randomInt(0, 26) + 97); charValue = charValue + String.valueOf(c); } return charValue; } protected static int randomInt(int from, int to) { Random r = new Random(); return from + r.nextInt(to - from); } public static void main(String[] args) throws Exception { System.out.println(draw(randAlpha(4), GRAPHIC_PNG, new FileOutputStream("c:/myimg.png"))); } }
package test; import test.LogProxy; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import test.web.boot.api.ModuleBaseServlet; import test.web.utils.http.ResultCode; import test.web.utils.http.ResultProxy; public class AuthCode extends ModuleBaseServlet { private static final long serialVersionUID = 1L; private LogProxy logg = LogProxy.getProxy(getClass().getName()); public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { try { String randomCode = RandomGraphic.randAlpha(4); this.logg.info("###> 【验证码】doGet==> randomCode:" + randomCode, new Object[0]); request.getSession().setAttribute("SESSION_KEY_AUTHCODE", randomCode); RandomGraphic.draw(randomCode, RandomGraphic.GRAPHIC_PNG, response.getOutputStream()); } catch (Exception e) { e.printStackTrace(); ResultProxy.getJSONResult().setCode(ResultCode.ERROR).send(response); } } }
相关推荐
java验证码识别示例
验证码破解的方法,简单验证码破解java示例
强大的JAVA通用验证码程序,含源码、示例及文档
httpClient连接https 获得验证码图片示例 需要证书才能连接的那种 /* 本文所用开发工具 jak1.5.0_06 eclipse:ObjectWeb Lomboz lib: commons-codec-1.4.jar commons-logging-1.1.jar httpclient-4.0.3.jar ...
这是个Java Web验证码示例,用于生成验证码(位数可以自己通过验证码类修改),并进行jsp页面展示和验证,可以直接附加到myeclipse下运行,上传上来与Java技术开发朋友分享。
主要介绍了java实现图片验证码示例,需要的朋友可以参考下
主要介绍了java Servlet 实现动态验证码图片示例的资料,这里整理了详细的代码,有需要的小伙伴可以参考下。
Java滑块验证码生成工具,包含源码和示例,欢迎下载~~~
Java实现的滑动拼图验证码后端及示例demo源码,java滑动拼图验证码demo代码
Java通用验证码程序及应用示例.附件里是我保存的网页,直接看网页就行了
Java是这样通过Unirest实现短信验证码注册登录完整示例:Java - Unirest.java和附件说明,刚碰Java通过Unirest实现短信验证码注册登录示例代码,压缩好了,大家一起来学习啊!
Cage 是一个 Java 实现的验证码图片生成库,快速、小型和简单。 示例代码: public class QuickStart { public static void main(String[] args) throws IOException { Cage cage = new GCage()...
java短信接口开发_java发送短信验证码通知_java短信demo示例.docx
主要介绍了java生成图片验证码示例程序,大家参考使用吧
主要为大家详细介绍了java生成图片验证码示例代码,感兴趣的小伙伴们可以参考一下
主要介绍了Java web实现动态图片验证码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本篇文章主要介绍了Java selenium处理极验滑动验证码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为大家详细介绍了java生成随机图片验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、...生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。
主要介绍了Java实现动态获取图片验证码的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧