在Java中生成图片验证码可以使用Java的图形库和随机数生成器来实现。下面是一个简单的示例代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
public class CaptchaGenerator {
private static final int WIDTH = 120; // 图片宽度
private static final int HEIGHT = 40; // 图片高度
private static final int CODE_LENGTH = 4; // 验证码长度
public static BufferedImage generateCaptcha() {
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();
// 设置背景色
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
// 生成随机验证码
String captchaCode = generateRandomCode();
// 绘制验证码
graphics.setColor(Color.BLACK);
graphics.setFont(new Font("Arial", Font.BOLD, 24));
graphics.drawString(captchaCode, 20, 30);
// 添加干扰线
Random random = new Random();
for (int i = 0; i < 5; i++) {
int x1 = random.nextInt(WIDTH);
int y1 = random.nextInt(HEIGHT);
int x2 = random.nextInt(WIDTH);
int y2 = random.nextInt(HEIGHT);
graphics.drawLine(x1, y1, x2, y2);
}
graphics.dispose();
return image;
}
private static String generateRandomCode() {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder code = new StringBuilder();
Random random = new Random();
for (int i = 0; i < CODE_LENGTH; i++) {
int index = random.nextInt(characters.length());
code.append(characters.charAt(index));
}
return code.toString();
}
}
使用以下代码来测试生成验证码并保存为图片文件:
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
BufferedImage captchaImage = CaptchaGenerator.generateCaptcha();
try {
File output = new File("captcha.png");
ImageIO.write(captchaImage, "png", output);
System.out.println("验证码已生成并保存为captcha.png");
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行上述代码后,将会在当前目录下生成一个名为captcha.png
的验证码图片文件。