代码拉取完成,页面将自动刷新
首先这个项目是完全基于java底层开发的,没有经过任何的框架渲染,目前项目中集成了junit测试框架,主要使用@Test
注解。
注意: 建议使用最新版的junit测试框架
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
@Test
public void getPngCaptcha() throws Exception{
PngCaptcha captcha = new PngCaptcha();
Properties properties = new Properties();
Config config = new Config(properties);
captcha.setConfig(config);
String text = captcha.getText();
System.out.println(text);
BufferedImage image = captcha.RenderImage(text);
captcha.write(new FileOutputStream(new File("路径+验证码命名")), image);
}
效果:
@Test
public void getGifCaptcha() throws Exception {
Properties properties = new Properties();
GifCaptcha captcha = new GifCaptcha();
Config config = new Config(properties);
captcha.setConfig(config);
String text = captcha.getText();
System.out.println(text);
captcha.createGif(text);
captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
}
效果:
两行配置代码可以实现改变验证码图片大小:
properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_WIDTH, "300");
properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_HEIGHT, "100");
效果:
第一种:代码内置实现了字体配置(默认字体大小30)具体效果如上所示 第二种:自行添加内置字体(字体来源均已在下文提及)
设置字体:
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_FONT_NAMES, "Algerian,AlphabetSoup Tilt BT");
修改字体大小:
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_FONT_SIZE, "36");
png格式效果:
gif格式效果:
第三种:将准备好的字体放在项目的根目录下的resource
目录下
@Test
public void getGifCaptcha() throws Exception {
Properties properties = new Properties();
GifCaptcha captcha = new GifCaptcha();
Config config = new Config(properties);
captcha.setConfig(config);
String text = captcha.getText();
// 注意这行代码
captcha.setTextFont("CASTELAR.ttf", 36f);
captcha.createGif(text);
captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
}
效果:
修改干扰线(默认干扰线数量为1)
// 设置干扰线数量(取消则设置数量为0)
properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_NUMBER, "0");
// 设置干扰线厚度(厚度默认为1)
properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_THICKNESS, "5");
// 设置干扰圆数量(取消则设置数量为0)
properties.setProperty(CaptchaConstant.CAPTCHA_NOISE_NUMBER, "0");
取消干扰线干扰圆效果:
设置干扰线干扰圆效果(效果自行设置):
// 设置干扰线数量(取消则设置数量为0)
properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_NUMBER, "3");
// 设置干扰线厚度(厚度默认为1)
properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_THICKNESS, "5");
// 设置干扰圆数量(取消则设置数量为0)
properties.setProperty(CaptchaConstant.CAPTCHA_NOISE_NUMBER, "5");
不添加扭曲效果:
// 添加扭曲效果(默认true)
properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_SHEAR_ADD, "no");
添加扭曲效果:
// 添加扭曲效果(默认true)
properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_SHEAR_ADD, "yes");
设置内容长度:(默认为4位)
// 设置长度(默认四位)
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_LENGTH, "6");
设置内容格式:(内置10种内容格式)
// 数字
NUMBER(1, "NUMBER"),
// 中文数字
NUMBER_ZH(2, "NUMBER_ZH"),
// 中文
CHINESE(3, "CHINESE"),
// 点击中文成语
CHINESE_IDIOM(4, "CHINESE_IDIOM"),
// 小写英文
CHAR(5, "CHAR"),
// 大写
UPPER_CHAR(6, "UPPER_CHAR"),
// 英文和中文混合
STRING(7, "STRING"),
//数字和大小写字符验证码
UPPER_STRING(8, "UPPER_STRING"),
// 算术
ARITHMETIC(9, "ARITHMETIC"),
// 中文算术
ARITHMETIC_ZH(10, "ARITHMETIC_ZH");
示例:
1、数字
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "NUMBER");
2、中文数字
// 设置长度(默认四位)
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_LENGTH, "6");
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "NUMBER_ZH");
3、随机中文
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "CHINESE");
4、中文成语
@Test
public void getGifCaptcha() throws Exception {
Properties properties = new Properties();
GifCaptcha captcha = new GifCaptcha();
// 注意这行代码
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "CHINESE_IDIOM");
Config config = new Config(properties);
captcha.setConfig(config);
String text = captcha.getText();
// 注意这行代码
captcha.createGif(text.split(",")[1]);
captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
}
6、算术
@Test
public void getGifCaptcha() throws Exception {
Properties properties = new Properties();
GifCaptcha captcha = new GifCaptcha();
// 这行
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "ARITHMETIC");
Config config = new Config(properties);
captcha.setConfig(config);
String text = captcha.getText();
System.out.println(text);
// 这行
int temp = text.indexOf("?");
// 这行
captcha.createGif(text.substring(0, temp));
captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
}
7、中文算术
properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "ARITHMETIC_ZH");
设置无边框:
properties.setProperty(CaptchaConstant.CAPTCHA_BORDER, "no");
设置边框厚度及颜色:
properties.setProperty(CaptchaConstant.CAPTCHA_BORDER_THICKNESS, "5");
properties.setProperty(CaptchaConstant.CAPTCHA_BORDER_COLOR, "0,0,0");
properties.setProperty(CaptchaConstant.CAPTCHA_BACKGROUND_COLOR, "0,0,0");
这个框架花费了我不少的心思,同时也参考了一些开源项目的解决方案,开源不易,感谢分享
项目的所有源码均已上传到码云,有需要者自行下载使用。
项目开发所使用的字体均来源于所使用电脑的windows10系统提供的内置字体,使用者可自行查看 **C:\Windows\Fonts
**目录下的字体,或者是在网上下载喜欢的字体去更改项目内置的字体,后续如有发生任何字体侵权行为,与项目开发者无关,特此声明!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。