public class RandomCaptchaGenerator { // 随即生成包含验证码的字符串 public static String random( ) { // 因为o0,l1很难区分,所以,去掉o,l,y,v,0,1 String str = ""; str = "23456789abcdefghijkmnpqrstuwxzh";// 初始化种子 return RandomStringUtils.random(6, str);// 返回length位的字符串 } /** * 根据要求的数字生成图片,背景为白色,字体大小16,字体颜色黑色粗体 * * @param num * 要生成的字符 * @param out * 输出流 * @throws IOException */ public static void createImage(String num, OutputStream out) throws IOException { if (num.getBytes().length > 6) { throw new IllegalArgumentException( "The length of param char cannot exceed 6."); } // 设定宽度和高度 int width = 80; int height = 30; // 在内存中创建图象 BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics2D g = (Graphics2D) bi.getGraphics(); // 画边框 java.util.Random random = new java.util.Random(); g.setColor(Color.white); g.fillRect(0, 0, width, height); // 设置字体 Font mFont = new Font("Tahoma", Font.BOLD, 16); g.setFont(mFont); g.setColor(Color.BLACK);// 设置字体颜色 // 画认证码,每个认证码在不同的水平位置 String str1[] = new String[6]; for (int i = 0; i < str1.length; i++) { str1[i] = num.substring(i, i + 1); int w = 0; int x = (i + 1) % 3; // 随即生成验证码字符的水平偏移量 if (x == random.nextInt(3)) { w = 19 - random.nextInt(7); } else { w = 19 + random.nextInt(7); } // 随即生成颜色 Color color1 = new Color(random.nextInt(180), random.nextInt(180), random.nextInt(180)); g.setColor(color1); g.drawString(str1[i], 12 * i + 4, w); } // 随机产生干扰点,并用不同的颜色表示,使图象中的认证码不易被其它程序探测到 for (int i = 0; i < 100; i++) { int x = random.nextInt(width); int y = random.nextInt(height); Color color1 = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)); g.setColor(color1); // 随即画各种颜色的点 g.drawOval(x, y, 0, 0); } // 画干扰线 for (int i = 0; i < 0; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(width); int y1 = random.nextInt(height); Color color1 = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)); g.setColor(color1); // 随即画各种颜色的线 g.drawLine(x, y, x1, y1); } // 图像生效 g.dispose(); // 输出页面 ImageIO.write(bi, "jpg", out); out.close(); } public static void main(String[] args) throws IOException { String num = random(); System.out.println(num); createImage(num, new FileOutputStream("D:/test.jpg")); System.out.println("Image generated."); } }
相关推荐
java 验证码 java 验证码 java 验证码 java 验证码
Java验证码框架.可实现多种验证很强大
java 验证码识别 ocr java 验证码识别 ocr
70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java...
java 验证码识别源程序 windows版本 概率90%以上
Java验证码生成库 JCaptcha
java验证码组件Jcaptcha,希望对大家有所帮助!!!
java验证码识别源码,验证码生成地址自己添加,main 函数两个方法取消注释
java验证码代码,可直接引入到自己的项目中,就可以有验证码功能实现
比较常见的Java验证码(解压导入MyEclipse即可),思路清晰,较容易理解!
csdn上三种java验证码生成方法,以及谷歌开源验证码,总共四种验证码生成集合。将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 ...
Java验证码,这里写了两个方法,仅供参考
java验证码识别示例
Java验证码案例,全新的Java验证码严重源码
java验证码识别 JAVA知识巩固 源码 java验证码识别 java验证码识别
学习时使用的验证码java程序,很简单,对于初学者帮助很大。
纯Java生成验证码图片工具类。使用时直接解压,将工具类导入Java项目即可,直接调用生成验证码方法即可。
验证码是各项目做登录功能常常使用的功能,现分享一个实现的源码。
一个java验证码的例子,适合初学者来学习。。。。。。。。