<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");
}
}
}