package com.zhuke;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Random;
import javax.imageio.ImageIO;
public class Test {
public static void main(String[] args) throws FileNotFoundException, IOException {
//生成随机汉字
String s = new Test().generateString(4);
//新建图像缓存对象
BufferedImage img = new BufferedImage(100, 50, BufferedImage.TYPE_INT_RGB);
//得到Graphics2D对象,用于在图片上进行绘图
Graphics2D g2d = img.createGraphics();
//绘制文字
g2d.drawString(s, 30,20);
//释放G2D的全部资源
g2d.dispose();
//将图片缓存写入文件中
ImageIO.write(img, "JPEG", new FileOutputStream(new File("test.jpg")));
}
/**
* 随机生成指定长度的随机汉字
*
* @param length
* 生成的中文字符串的长度
* @return 随机字符串
*/
public String generateString(int length) {
String s = "";
for (int i = 0; i < length; i++) {
// 16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),生成常用的汉字的高位码
int highPos = 176 + new Random().nextInt(39);
// 生成低位码
int lowPos = 161 + new Random().nextInt(93);
// 将生成的区位码存储在字节数组中,用于生成汉字
byte[] b = new byte[] { new Integer(highPos).byteValue(),
new Integer(lowPos).byteValue() };
try {
s = s + new String(b, "GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return s;
}
}
简单的中文图片验证码的生成
最新推荐文章于 2024-04-06 07:59:44 发布