java 简单验证码实现
2018-01-07 00:00
309 查看
编程思路:画板,画笔,添加验证码,添加干扰线,输出验证码图片文件
package cb.verify; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; public class VerifyPhoto { private static int x1; private static int x2; private static int y1; private static int y2; private static String str ; private static String[] color = {"#cccccc","#ff66ff","#660066","#33ffcc","#0033cc","#ff0033","#99ff33","#ffcc66"} ; private static String[] fond = {"Times New Roman","微软雅黑","新宋体","楷体","黑体"}; // private static String[] style = {"Font.PLAIN","Font.BOLD","Font.ITALIC","Font.BOLD+Font.ITALIC"}; private static String code = "234567892345678923456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static String verifyCode(String path) throws Exception, IOException{ //创建画板 BufferedImage bi = new BufferedImage(100,40, BufferedImage.TYPE_INT_RGB); //创建画笔 Graphics2D g = bi.createGraphics(); //设置背景色 g.setBackground(Color.WHITE); g.fillRect(0, 0, 100, 40); // g.fillOval(0, 0, 100, 40); //画验证码 for(int j=0; j<4; j++){ //随机生成一种字体 g.setFont(new Font(fond[(int)(Math.random()*10/5 -1)], 0, 26)); //随机生成一种颜色 g.setColor(Color.decode(color[(int)(Math.random()*7)])); System.out.println(g.getColor()); char tmp =code.charAt((int)(Math.random()*72-1)); char[] v1 = {tmp}; int x = (int)(Math.random()*20+j*20); int y = (int)(Math.random()*20+15); g.drawChars(v1, 0, 1,x , y); if(j==0) str = String.valueOf(tmp); else str += String.valueOf(tmp); } //画干扰线 g.setColor(Color.BLUE); for(int i = 0; i<3; i++){ x1 = (int) (Math.random()*30+i*30); y1 = (int) (Math.random()*40); x2 = (int) (Math.random()*30+i*20); y2 = (int) (Math.random()*40); g.drawLine(x1, y1, x2, y2); System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"); } for(int i = 0; i<2; i++){ x1 = (int) (Math.random()*20+i*40); y1 = (int) (Math.random()*40); x2 = (int) (Math.random()*30+i*40); y2 = (int) (Math.random()*40); g.drawLine(x1, y1, x2, y2); System.out.println("("+x1+","+y1+")"+"("+x2+","+y2+")"); } //生成图片 ImageIO.write(bi, "png", new FileOutputStream(path)); System.out.println(str); return str; } }
相关文章推荐
- 简单实现Java验证码功能
- Java 验证码生成工具(简单实现)
- 简单的谈一下怎么Java的验证码的实现
- java实现简单的登录验证码 4000
- Java实现验证码简单示例
- java实现一个简单的验证码生成器
- java 实现简单文本验证码思路源码
- java awt 实现简单的验证码图片的生成
- java识别验证码-用tess4j实现超简单调用tessreact-orc来破解验证码
- 识别简单验证码, Java 实现
- Cage 是一个 Java 实现的验证码图片生成库,快速、小型和简单。
- Java 实现随机验证码功能简单实例
- extjs ajax java简单精美验证码实现 有图
- Java 的简单数据库连接池实现
- 一个简单的用JAVA实现的屏幕抓图(源代码)
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- 在java中实现调用简单的c程序
- 由Java实现简单的文本编辑器
- 用java实现简单url负载均衡以及容错
- 一种简单的方法在程序中实现透明效果(JAVA)