package test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import
import
import java.util.Random;
import javax.imageio.ImageIO;
public class GenCheckCode {
public static void genCheckImage(int length)
{
BufferedImage image = new BufferedImage(100, 25, BufferedImage.TYPE_3BYTE_BGR);
Graphics g = image.getGraphics();
g.setColor(Color.BLUE);
g.fillRect(0, 0, 100, 25);
g.setColor(Color.YELLOW);
String code = genCheckNumber(length);
Font font =
new Font("宋体", Font.BOLD + Font.ITALIC, 14 );
g.setFont(font);
g.drawString(code, 30, 15);
try {
ImageIO.write(image, "jpg", new File("c:\\test.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 生成随机字符串
* @param length
* @return
*/
public static String genCheckNumber(int length)
{
StringBuffer ret = new StringBuffer();
Random ran = new Random();
int pos = 0;
for (int i = 0; i < length; i++) {
pos = ran.nextInt(26 * 2 + 10);
while (pos < 0)
{
pos = ran.nextInt();
}
ret.append(genSource()[pos]);
}
return ret.toString();
}
/**
* 生产一个数组总含有小写字母和大写字母,以及数字0到9
* @return
*/
public static String[] genSource()
{
String[] source = new String[26 * 2 + 10];
int aToInt = (int)'a';
for (char i = 'a'; i <= 'z'; i++) {
source[i - aToInt] = String.valueOf(i);
}
int AToInt = (int)'A';
for (char i = 'A'; i <= 'Z'; i++) {
source[i - AToInt + 26] = String.valueOf(i);
}
for (int i = 0; i < 10; i++) {
source[i + 26 * 2] = String.valueOf(i);
}
return source;
}
public static void main(String[] args) {
genCheckImage(5);
}
}
我自己写了一个,你试试。