网站验证码图片生成类

@zgcwkj  2019年01月11日

Java 验证码生成代码,生成样式

依赖:生成随机的字符类

生成的图片:

001.png

源代码:

/**
 * 生成验证码
 * 
 * @author zgcwkj
 * @since 2019-01-11
 */
public class ValidateCode {
    private String validateCode = "";
    private String validateColor = "FFFFFF";

    /**
     * 实例验证码
     */
    public ValidateCode() {
        validateCode = new RandomCode(true, true, false).getRandom(4);
    }

    /**
     * 实例验证码
     */
    public ValidateCode(int length) {
        validateCode = new RandomCode(true, true, false).getRandom(length);
    }

    /**
     * 获取验证码
     */
    public String GetValidate() {
        return validateCode;
    }

    /**
     * 背景颜色 不传参数时为随机
     */
    public void GetColor() {
        validateColor = new RandomCode(true, false, false).getRandom(6);
    }

    /**
     * 背景颜色 不传参数时为随机
     */
    public void GetColor(String color) {
        validateColor = color;
    }

    /**
     * 获取生成的图片
     * 
     * @param RandomText 随机码
     * @return
     */
    public BufferedImage getImage() {
        // 创建缓存
        BufferedImage bi = new BufferedImage(validateCode.length() * 20, 35, BufferedImage.TYPE_INT_RGB);
        // 获得画布
        Graphics g = bi.getGraphics();
        // 设置颜色
        g.setColor(new Color(Integer.parseInt(validateColor, 16)));
        // 填充区域
        g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
        // 设置颜色
        g.setColor(Color.lightGray);
        // 画图片的背景噪音线
        for (int i = 0; i < 12; i++) {
            int x1 = new Random().nextInt(bi.getWidth());
            int y1 = new Random().nextInt(bi.getHeight());
            int x2 = new Random().nextInt(bi.getWidth());
            int y2 = new Random().nextInt(bi.getHeight());
            g.drawLine(x1, y1, x2, y2);
        }

        Graphics2D g2d = (Graphics2D) g;// 转换为Graphics2D类型
        Font font = new Font("Georgia", Font.BOLD, 25); // 创建字体对象
        g2d.setFont(font); // 设置字体
        // 创建循环渐变的GraphientPaint对象
        GradientPaint paint = new GradientPaint(0, 0, Color.BLUE, bi.getWidth(), bi.getHeight(), Color.GRAY, true);
        g2d.setPaint(paint);// 设置渐变
        g2d.drawString(validateCode, 5, (bi.getHeight() + 10) / 2); // 绘制文本

        // 设置颜色
        g.setColor(Color.WHITE);
        // 画图片的前景噪音点
        for (int i = 0; i < 10; i++) {
            int x1 = new Random().nextInt(bi.getWidth());
            int y1 = new Random().nextInt(bi.getHeight());
            int x2 = new Random().nextInt(bi.getWidth());
            int y2 = new Random().nextInt(bi.getHeight());
            g.drawLine(x1, y1, x2, y2);
        }
        return bi;
    }
}

使用:

ValidateCode validateCode = new ValidateCode(6);
String random = validateCode.GetValidate();
BufferedImage image = validateCode.getImage();

源码下载:ValidateCode.java



添加新评论

Top