undefined
private int w = 70;undefined
private int h = 35;undefined
private Random r = new Random();undefined
// {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"}undefined
private String[] fontNames = {"宋体", "华文楷体", "黑体", "微软雅黑", "楷体_GB2312"};undefined
private String codes = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";undefined
private Color bgColor = new Color(255, 255, 255);undefined
private String text ;undefined
private Color randomColor () {undefined
int red = r.nextInt(150);undefined
int green = r.nextInt(150);undefined
int blue = r.nextInt(150);undefined
return new Color(red, green, blue);undefined
}undefined
private Font randomFont () {undefined
int index = r.nextInt(fontNames.length);undefined
String fontName = fontNames[index];undefined
int style = r.nextInt(4);undefined
int size = r.nextInt(5) + 24;undefined
return new Font(fontName, style, size);undefined
}undefined
private void drawLine (BufferedImage image) {undefined
int num = 3;undefined
Graphics2D g2 = (Graphics2D)image.getGraphics();undefined
for(int i = 0; i < num; i++) {undefined
int x1 = r.nextInt(w);undefined
int y1 = r.nextInt(h);undefined
int x2 = r.nextInt(w);undefined
int y2 = r.nextInt(h);undefined
g2.setStroke(new BasicStroke(1.5F));undefined
g2.setColor(Color.BLUE);undefined
g2.drawLine(x1, y1, x2, y2);undefined
}undefined
}undefined
private char randomChar () {undefined
int index = r.nextInt(codes.length());undefined
return codes.charAt(index);undefined
}undefined
private BufferedImage createImage () {undefined
BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);undefined
Graphics2D g2 = (Graphics2D)image.getGraphics();undefined
g2.setColor(this.bgColor);undefined
g2.fillRect(0, 0, w, h);undefined
return image;undefined
}undefined
public BufferedImage getImage () {undefined
BufferedImage image = createImage();undefined
Graphics2D g2 = (Graphics2D)image.getGraphics();undefined
StringBuilder sb = new StringBuilder();undefined
// 向图片中画4个字符undefined
for(int i = 0; i < 4; i++) {undefined
String s = randomChar() + "";undefined
sb.append(s);undefined
float x = i * 1.0F * w / 4;undefined
g2.setFont(randomFont());undefined
g2.setColor(randomColor());undefined
g2.drawString(s, x, h-5);undefined
}undefined
this.text = sb.toString();undefined
drawLine(image);undefined
return image;undefined
}undefined
public String getText () {undefined
return text;undefined
}undefined
public static void output (BufferedImage image, OutputStream out)undefined
throws IOException {undefined
ImageIO.write(image, "JPEG", out);undefined
}来源: http://www.bubuko.com/infodetail-1858655.html