java 验证码 源码_java 验证码生成源码

fontList = new ArrayList();

fontList.add(new Font("微软 雅黑", Font.LAYOUT_NO_START_CONTEXT, 30));// 可以设置斜体之类的

DefaultWordRenderer dwr = new DefaultWordRenderer(getRandomColor(), fontList);

// 加入多种颜色后会随机显示 字体空心

WordRenderer wr = dwr;

// 增加文本,默认为5个随机字符.

if (_text == null) {

builder.addText();

} else {

String[] ts = _text.split(",");

for (int i = 0; i < ts.length; i++) {

String[] ts1 = ts[i].split(":");

if ("chinese".equals(ts1[0])) {

builder.addText(new ChineseTextProducer(Integer.parseInt(ts1[1])), wr);

} else if ("number".equals(ts1[0])) {

// 这里没有0和1是为了避免歧义 和字母I和O

char[] numberChar = new char[] { '2', '3', '4', '5', '6', '7', '8' };

builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr);

} else if ("word".equals(ts1[0])) {

// 原理同上

char[] numberChar = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'k', 'm', 'n', 'p', 'r',

'w', 'x', 'y' };

builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr);

} else {

builder.addText(new DefaultTextProducer(Integer.parseInt(ts1[1])), wr);

}

}

}

// --------------添加背景-------------

// 设置背景渐进效果 以及颜色 form为开始颜色,to为结束颜色

// GradiatedBackgroundProducer gbp=new GradiatedBackgroundProducer();

// gbp.setFromColor(Color.yellow);

// gbp.setToColor(Color.red);

// 无渐进效果,只是填充背景颜色

// FlatColorBackgroundProducer fbp=new

// FlatColorBackgroundProducer(Color.red);

// 加入网纹--一般不会用

// SquigglesBackgroundProducer sbp=new SquigglesBackgroundProducer();

// 没发现有什么用,可能就是默认的

// TransparentBackgroundProducer tbp = new

// TransparentBackgroundProducer();

// builder.addBackground(gbp);

// ---------装饰字体---------------

// 字体边框齿轮效果 默认是3

builder.gimp(new BlockGimpyRenderer(1));

// 波纹渲染 相当于加粗

// builder.gimp(new RippleGimpyRenderer());

// 修剪--一般不会用

// builder.gimp(new ShearGimpyRenderer(Color.red));

// 加网--第一个参数是横线颜色,第二个参数是竖线颜色

// builder.gimp(new FishEyeGimpyRenderer(Color.red,Color.yellow));

// 加入阴影效果 默认3,75

// builder.gimp(new DropShadowGimpyRenderer());

// 创建对象

Captcha captcha = builder.build();

req.getSession().setAttribute("simpleCaptcha", captcha);

resp.setHeader("Cache-Control", "private,no-cache,no-store");

resp.setContentType("image/png");

try {

OutputStream os = resp.getOutputStream();

ImageIO.write(captcha.getImage(), "png", os);

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public Color getRandomColor() {

int n = RandomUtils.nextInt(100);

if (n % 3 == 1) {

return Color.RED;

} else if (n % 3 == 2) {

return Color.BLUE;

}

return Color.GREEN;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值