您的位置:首页
图片验证码
2016-07-21 18:54
197 查看
package cn.itcast.image; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; public class VerifyCode { private int w=70; private int h=35; private Random r=new Random(); private String[] fontNames={"宋体","华文楷体","黑体","微软雅黑","楷体_GB2312"}; private String codes="23456789abdcefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ"; private Color bgColor=new Color(255,255,255); private String text; private Color randomColor(){ int red=r.nextInt(150); int green=r.nextInt(150); int blue=r.nextInt(150); return new Color(red,green,blue); } public char randomChar(){ return codes.charAt(r.nextInt(codes.length())); } private Font randomFont(){ int index=r.nextInt(fontNames.length); String fontName=fontNames[index]; int style=r.nextInt(4);//随机生成的样式:0 无样式 1粗体 2斜体 3(粗体且斜体) int size=r.nextInt(5)+24;//生成随机字号 return new Font(fontName,style,size); } private void drawLine(BufferedImage image){ int num=3;//一共画三条线 Graphics2D g2=(Graphics2D)image.getGraphics(); for(int i=0;i<num;i++){ int x1=r.nextInt(w); int y1=r.nextInt(h); int x2=r.nextInt(w); int y2=r.nextInt(h); g2.setStroke(new BasicStroke(1.5F)); g2.setColor(Color.BLUE); g2.drawLine(x1, y1, x2, y2); } } public BufferedImage getImage(){ BufferedImage image=createImage(); Graphics2D g2=(Graphics2D)image.getGraphics(); StringBuilder sb=new StringBuilder(); for(int i=0;i<4;i++){ String s=randomChar()+""; sb.append(s); float x=i*1.0F*w/4; g2.setFont(randomFont()); g2.setColor(randomColor()); g2.drawString(s,x,h-5); } this.setText(sb.toString()); drawLine(image); return image; } private void setText(String text) { this.text=text; } public BufferedImage createImage(){ BufferedImage bi=new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D g2=(Graphics2D)bi.getGraphics(); g2.setColor(bgColor); g2.fillRect(0, 0, w, h); return bi; } public String getText() { return text; } public static void output(BufferedImage image,OutputStream out){ try { ImageIO.write(image, "JPEG", out); } catch (IOException e) { e.printStackTrace(); } } }
View Code
相关文章推荐
- L1-030. 一帮一-PAT团体程序设计天梯赛GPLT
- L1-031. 到底是不是太胖了-PAT团体程序设计天梯赛GPLT
- centos安装nodejs
- HttpUrlConnection(GET方式)
- Rotate List
- hdu 5742 It's All In The Mind 水题
- DataTable转CSV
- java连接mysql(二)
- UICollectionView的基本概念与使用
- 2016 Multi-University Training Contest 2 Keep On Movin
- 走遍亚洲 —— 印度半岛
- Android编码命名规范
- 接呀呀云实时语音SDK总结
- HDU 1219 AC Me
- 发现eclipse红叉,查看markers发现Target runtime Apache Tomcat 6.0 is not defined
- L1-032. Left-pad-PAT团体程序设计天梯赛GPLT
- Android 不同应用通过SharedPreference实现共享数据
- 通过ASM1117实现5V转3.3V电路
- Android Binder 设计与实现
- Reverse Nodes in k-Group