package D6;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
public class Yanma {
public static void main(String[] args) throws IOException {
String letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random rand = new Random();
int width = 160;
int height = 60;
int len = 5;//在这个代码中len是length的缩写
BufferedImage a = new BufferedImage(width, height, 2);
Graphics2D g = a.createGraphics();
//设置线条和文件的,抗锯齿(平滑)
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
RenderingHints.VALUE_STROKE_DEFAULT);
g.setColor(Color.WHITE);
g.fillRect(0, 0, width - 1, height - 1);
Font font = new Font("宋体", Font.BOLD, 20);//字体的设置
g.setFont(font);
StringBuilder b = new StringBuilder(len);
for (int i = 0; i < len; i++) {
//三个rand判断随机颜色 最后一个是判断透明度
Color c = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256), rand.nextInt(100) + 100);
g.setColor(c);
int x = i * 35 + 5;
int y = rand.nextInt(25) + 28;
font = font.deriveFont(rand.nextInt(3), rand.nextInt(18) + 30);
g.setFont(font);
String d = String.valueOf(letter.charAt(rand.nextInt(letter.length())));
b.append(d);
double radianPercent = Math.PI * (rand.nextInt(35)/182D);
if (rand.nextBoolean())
radianPercent = -radianPercent;
g.rotate(radianPercent,x,y);
g.drawString(d,x,y);
g.rotate(-radianPercent,x,y);
}
System.out.println(b);
ImageIO.write(a,"png",new File("sss.png"));
}
}
随机生成不同颜色,不同大小的验证码