<pre name="code" class="java">package testpackage;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
public class TestClass {
public static void main(String[] lovingshu){
BufferedImage bufImage=new BufferedImage(100,30,BufferedImage.TYPE_3BYTE_BGR); //创建BufferedImage对象
Graphics gra=bufImage.getGraphics(); //使用BufferedImage对象得到Graphics对象
Random ran=new Random(); //随机数对象
gra.setColor(Color.white); //设置画布背景色
gra.setFont(new Font("微软雅黑",Font.ITALIC,20));//设置字体
gra.fillRect(0, 0, 100, 30); //此部为绘制一个矩形,其中x,y坐标都是从0开始,宽度为100,高度为30
String vliCode="";
while(vliCode.length()<4){
gra.setColor(new Color(ran.nextInt(255)+1,ran.nextInt(255)+1,ran.nextInt(255)+1)); //随机得到颜色用于绘制内容
String tmp="";
//the style of the code
switch(ran.nextInt(3)){
case 0:
tmp=(char)(ran.nextInt(26)+65)+""; //得到a-z的26字母
break;
case 1:
tmp=(char)(ran.nextInt(26)+97)+""; //得到A-Z的26字母
break;
default:
tmp=ran.nextInt(10)+""; //得到数字0-9
break;
}
gra.drawString(tmp,10+vliCode.length()*20,20); //此步为在x坐标为(10+vliCode.length()*20)y坐标为20的地方绘制内容为tmp的字符图。
vliCode+=tmp;
}
//绘制干扰线
for(int i=0;i<(ran.nextInt(5)+5);i++){
gra.setColor(new Color(ran.nextInt(255)+1,ran.nextInt(255)+1,ran.nextInt(255)+1)); //设置干扰线的颜色
gra.drawLine(ran.nextInt(100),ran.nextInt(30),ran.nextInt(100),ran.nextInt(30)); //设置干扰线的坐标
}
//把图像保存到E盘,如果是网站则可以把图片保存到项目下面然后页面上取出来即可
try {
File fi=new File("E:\\ValidateCode.jpg");//this is the path
ImageIO.write(bufImage,"jpeg",fi);
if(fi.exists()){
System.out.println("Success!");
}else{
System.out.println("Failed!");
}
} catch (IOException e) {
e.printStackTrace();
}finally{
System.out.println("Lovingshu's Forever");
}
}
}