以下是一个简单的 Java 验证码实现示例:
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.util.Random;
-
- import javax.imageio.ImageIO;
-
- public class CaptchaGenerator {
- public static BufferedImage generateCaptchaImage(String captchaCode) {
- int width = 200;
- int height = 50;
-
- BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
- Graphics g = image.getGraphics();
-
- // 设置背景颜色
- g.setColor(Color.WHITE);
- g.fillRect(0, 0, width, height);
-
- // 设置边框
- g.setColor(Color.BLACK);
- g.drawRect(0, 0, width - 1, height - 1);
-
- // 设置字体
- g.setFont(new Font("Times New Roman", Font.BOLD, 40));
-
- // 绘制验证码
- g.setColor(Color.BLACK);
- g.drawString(captchaCode, 50, 40);
-
- // 绘制噪点
- Random rnd = new Random();
- for (int i = 0; i < 100; i++) {
- int x = rnd.nextInt(width);
- int y = rnd.nextInt(height);
- g.setColor(new Color(rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)));
- g.drawLine(x, y, x, y);
- }
-
- g.dispose();
-
- return image;
- }
- }
这个方法接受一个字符串作为验证码文本,并返回一个绘制了验证码文本和噪点的 BufferedImage 对象。你可以将其保存到文件或将其显示到网页中。以下是一个使用示例:
- public static void main(String[] args) throws Exception {
- String captchaCode = generateRandomCode();
- BufferedImage image = CaptchaGenerator.generateCaptchaImage(captchaCode);
-
- // 保存生成的验证码图片
- ImageIO.write(image, "JPEG", new File("captcha.jpg"));
-
- // 显示生成的验证码图片
- JFrame frame = new JFrame();
- JLabel label = new JLabel(new ImageIcon(image));
- frame.getContentPane().add(label);
- frame.pack();
- frame.setVisible(true);
- }
在这里,我们首先生成随机的验证码文本,然后使用 CaptchaGenerator 类生成验证码图片。最后,我们将图片保存到文件和显示到 JFrame 中。
效果如下: