java 生成图片验证码(三)

要生成图片验证码,可以使用Java的Graphics2D类和AWT库来创建和绘制图片。

以下是一个示例代码:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;

public class ImageCodeGenerator {

    // 图片的宽度和高度
    private static final int width = 80;
    private static final int height = 30;

    // 验证码的字符集
    private static final String codeSet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    // 生成随机验证码
    private static String generateCode() {
        StringBuilder code = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 4; i++) {
            int index = random.nextInt(codeSet.length());
            code.append(codeSet.charAt(index));
        }
        return code.toString();
    }

    // 生成随机颜色
    private static Color generateColor() {
        Random random = new Random();
        int r = random.nextInt(256);
        int g = random.nextInt(256);
        int b = random.nextInt(256);
        return new Color(r, g, b);
    }

    // 生成验证码图片
    public static BufferedImage generateImageCode() {
        // 创建图片缓冲区
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics = image.createGraphics();

        // 设置背景颜色
        graphics.setColor(Color.WHITE);
        graphics.fillRect(0, 0, width, height);

        // 生成验证码
        String code = generateCode();

        // 将验证码绘制到图片上
        graphics.setFont(new Font("Arial", Font.PLAIN, 20));
        for (int i = 0; i < code.length(); i++) {
            graphics.setColor(generateColor());
            graphics.drawString(String.valueOf(code.charAt(i)), i * 20 + 10, height / 2 + 5);
        }

        // 添加干扰线
        for (int i = 0; i < 5; i++) {
            graphics.setColor(generateColor());
            int startX = random.nextInt(width);
            int startY = random.nextInt(height);
            int endX = random.nextInt(width);
            int endY = random.nextInt(height);
            graphics.drawLine(startX, startY, endX, endY);
        }

        // 销毁资源
        graphics.dispose();

        return image;
    }
}

这个示例代码中,首先定义了验证码图片的宽度、高度和字符集。然后,generateCode()方法使用随机数生成一个长度为4的验证码。generateColor()方法生成随机的RGB颜色。

generateImageCode()方法首先创建一个BufferedImage对象,并使用Graphics2D类的实例来绘制验证码图片。设置背景颜色、生成验证码、绘制验证码字符、添加干扰线等操作都在这个方法内完成。最后,调用dispose()方法销毁资源,并返回生成的验证码图片。

你可以调用generateImageCode()方法来获取生成的图片验证码。例如:

BufferedImage image = ImageCodeGenerator.generateImageCode();

然后,你可以使用Java的图形界面库或者将图片保存到文件中,并在需要显示图片验证码的地方展示它。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值