java 利用 Graphics画验证码带边框
时间: 2024-02-18 19:20:58 浏览: 33
您好!以下是一个示例代码,可以使用 Java 的 Graphics 类来绘制带边框的验证码:
```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 void main(String[] args) {
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);
// 生成随机验证码
Random random = new Random();
String code = generateCode(random);
// 绘制验证码
int x = 20; // 起始 x 坐标
int y = HEIGHT / 2 + 5; // 起始 y 坐标
for (int i = 0; i < code.length(); i++) {
g.setColor(getRandomColor(random));
g.setFont(new Font("Arial", Font.BOLD, 20));
g.drawString(String.valueOf(code.charAt(i)), x, y);
x += 20; // 每个字符间隔 20 像素
}
// 绘制干扰线
for (int i = 0; i < 6; i++) {
g.setColor(getRandomColor(random));
int x1 = random.nextInt(WIDTH);
int y1 = random.nextInt(HEIGHT);
int x2 = random.nextInt(WIDTH);
int y2 = random.nextInt(HEIGHT);
g.drawLine(x1, y1, x2, y2);
}
// 释放资源
g.dispose();
// TODO: 将验证码图片保存到文件或输出到客户端
}
private static String generateCode(Random random) {
StringBuilder code = new StringBuilder();
for (int i = 0; i < CODE_LENGTH; i++) {
int num = random.nextInt(10);
code.append(num);
}
return code.toString();
}
private static Color getRandomColor(Random random) {
int r = random.nextInt(256);
int g = random.nextInt(256);
int b = random.nextInt(256);
return new Color(r, g, b);
}
}
```
以上代码通过 Java 的 Graphics 类绘制验证码图片,包括边框、随机验证码字符和干扰线。您可以根据需要将验证码图片保存到文件或输出到客户端。请注意,此代码只是一个示例,您可以根据实际需求进行修改和优化。
希望对您有所帮助!如果有任何疑问,请随时向我提问。
阅读全文