JCaptcha 验证码添加干扰线,显示中文验证码

import java.awt.Color;
import java.awt.Font;
import java.awt.image.ImageFilter;

import com.jhlabs.image.WaterFilter;
import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
import com.octo.captcha.component.image.backgroundgenerator.FunkyBackgroundGenerator;
import com.octo.captcha.component.image.backgroundgenerator.GradientBackgroundGenerator;
import com.octo.captcha.component.image.color.RandomRangeColorGenerator;
import com.octo.captcha.component.image.deformation.ImageDeformation;
import com.octo.captcha.component.image.deformation.ImageDeformationByFilters;
import com.octo.captcha.component.image.fontgenerator.FontGenerator;
import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
import com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster;
import com.octo.captcha.component.image.textpaster.TextPaster;
import com.octo.captcha.component.image.textpaster.textdecorator.BaffleTextDecorator;
import com.octo.captcha.component.image.textpaster.textdecorator.LineTextDecorator;
import com.octo.captcha.component.image.textpaster.textdecorator.TextDecorator;
import com.octo.captcha.component.image.wordtoimage.DeformedComposedWordToImage;
import com.octo.captcha.component.image.wordtoimage.WordToImage;
import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator;
import com.octo.captcha.component.word.wordgenerator.WordGenerator;
import com.octo.captcha.engine.image.gimpy.DefaultGimpyEngine;
import com.octo.captcha.image.gimpy.GimpyFactory;

public class ImageCodeEngine extends DefaultGimpyEngine {
private static final String CODE = "一二三四五六七字符显示的个数";// I、0去掉"一二三四五六七字符显示的个数"
// 字符显示的个数
private static final Integer MIN_WORD_LEN = new Integer(4);
// 字符显示的个数
private static final Integer MAX_WORD_LEN = new Integer(4);
// 验证码图片的高度宽度设定
private static final Integer IMAGE_WIDTH = new Integer(100);
private static final Integer IMAGE_HEIGHT = new Integer(40);
// 验证码中显示的字体大小
private static final Integer MIN_FONT_SIZE = new Integer(24);
private static final Integer MAX_FONT_SIZE = new Integer(26);

protected void buildInitialFactories() {
WordGenerator wordGenerator = new RandomWordGenerator(CODE);
BackgroundGenerator backgroundGenerator = new GradientBackgroundGenerator(
IMAGE_WIDTH, IMAGE_HEIGHT, Color.white, Color.white);
// 字体格式
Font[] fontsList = new Font[]{Font.decode("Arial"),Font.decode("Tahoma"),Font.decode("Verdana")};
fontsList = new Font[]{Font.decode("华文细黑")};//可以使用中文验证码,另外汉字宽度比较大,要重新调整一下字体大小,不然会出现异常
// 字体随机生成
FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE,MAX_FONT_SIZE,fontsList);
// 背景颜色随机生成
// 验证码的颜色-使用随机颜色器new Integer[]{0,100},new Integer[]{0,100}, new
// Integer[]{0,100}
RandomRangeColorGenerator cgen = new RandomRangeColorGenerator(
new int[] { 0, 150 }, new int[] { 0, 150 },
new int[] { 0, 150 });
backgroundGenerator = new FunkyBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT);

//文字干扰器--- 可以创建多个
BaffleTextDecorator baffleTextDecorator = new BaffleTextDecorator(2,cgen);//气泡干扰
LineTextDecorator lineTextDecorator = new LineTextDecorator(1,cgen);//曲线干扰
TextDecorator[] textDecorators = new TextDecorator[0];
//textDecorators[0] = baffleTextDecorator;
//textDecorators[0] = lineTextDecorator;
TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LEN,MAX_WORD_LEN, cgen,true, new TextDecorator[] { new BaffleTextDecorator(new Integer(1), Color.WHITE) }); 


//过滤器
WaterFilter water = new WaterFilter();
water.setAmplitude(4d);//振幅
water.setAntialias(true);//显示字会出现锯齿状,true就是平滑的
//water.setPhase(30d);//月亮的盈亏 
water.setWavelength(60d);//

ImageDeformation backDef = new ImageDeformationByFilters(
new ImageFilter[]{});
ImageDeformation textDef = new ImageDeformationByFilters(
new ImageFilter[]{});
ImageDeformation postDef = new ImageDeformationByFilters(
new ImageFilter[]{water});
// 生成图片输出
// WordToImage wordToImage = new ComposedWordToImage(fontGenerator,
// backgroundGenerator, textPaster);
// addFactory(new GimpyFactory(wordGenerator, wordToImage));
WordToImage word2image = new DeformedComposedWordToImage(fontGenerator, backgroundGenerator, textPaster,
backDef,
textDef,
postDef
);
addFactory(new GimpyFactory(wordGenerator, word2image));
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值