public class CreateImage {
public String sRand="";
/**
* Get Random Color
* @param fc
* @param bc
* @return Color
*/
public Color getRandColor(int fc,int bc){
//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
/**
* Create a image
* @param size
* @return image
*/
public BufferedImage createImg(int size){
// 在内存中创建图象
//int width=60, height=20;
int width=12*size, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生100条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<100;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(size位字符串)
String rand = new CreateRandomString().getRandomString(size);
sRand = rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,6,16);
// 图象生效
g.dispose();
return image;
}
}
CreateRandomString.java
/*
* 创建日期 2004-12-29
*
*/
package hk.com.csl.comm.util;
/**
* <p>Title: 产生随机字符串</p>
* <p>Description: Shark Test System</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: Completesolution Solution(GD) Company</p>
* @author Jason
* @version 1.0
*/
import java.util.*;
public class CreateRandomString{
public CreateRandomString() {
}
//Main method
//public static String getRandomString(int size){
/**
* Get String Created by Random Function
* @param size
* @return String
*/
public String getRandomString(int size){
//char[] c={'!','@','#','$','%','*','&','^','(',')','<','>','{','}','[',']','?','/','1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
char[] c={'1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
Random random = new Random(); //初始化随机数产生器
StringBuffer sb =new StringBuffer();
for(int i=0;i<size;i++){
sb.append(c[Math.abs(random.nextInt()) %c.length]);
}
return sb.toString();
}
/*
public static void main(String[] args) {
try {
String needString=getRandomString(20);
System.out.println(needString);
}
catch(Exception e) {
e.printStackTrace();
}
new CreateRandomString();
}*/
}