java生成图片验证码

本文介绍如何使用Java和kaptcha库生成图片验证码。首先通过引入依赖包设置基础环境,然后配置验证码的各种属性如边框、颜色及字符等,最后在Controller层实现验证码的生成与展示。

java生产图片验证码

1.第一步先引入架包
		<!--生成验证码-->
        <dependency>
            <groupId>com.github.axet</groupId>
            <artifactId>kaptcha</artifactId>
            <version>0.0.9</version>
        </dependency>
2.创建Bean并根据自己的需要进行配置
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;
@Configuration
public class KaptchaConfig {

    @Bean
    public DefaultKaptcha producer(){
        Properties p =new Properties();
        p.put("kaptcha.border","no");//是否有边框
        p.put("kaptcha.textproducer.font.color","black");//字体颜色
        p.put("kaptcha.image.width","135");//图片宽度
        p.put("kaptcha.textproducer.char.string","ABCDEFHKIJZPYZPRSTWX123456789");//使用哪些字符生成验证码
        p.put("kaptcha.image.height","50");//图片高度
        p.put("kaptcha.textproducer.font.size","43");//字体大小
        p.put("kaptcha.noise.color","blue");//字体颜色
        p.put("kaptcha.textproducer.char.length","5");//字符的个数
        p.put("kaptcha.textproducer.font.names","Arial");//字体
        Config config =new Config(p);
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
}

Kaptcha 详细配置表,可根据需要配置。

Constant描述默认值
kaptcha.border图片边框,合法值:yes , noyes
kaptcha.border.color边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blueblack
kaptcha.image.width图片宽200
kaptcha.image.height图片高50
kaptcha.producer.impl图片实现类com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl文本实现类com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string文本集合,验证码值从此集合中获取abcde2345678gfynmnpwx
kaptcha.textproducer.char.length验证码长度5
kaptcha.textproducer.font.names字体Arial, Courier
kaptcha.textproducer.font.size字体大小40px
kaptcha.textproducer.font.color字体颜色,合法值: r,g,b 或者 white,black,blueblack
kaptcha.textproducer.char.space文字间隔2
kaptcha.noise.impl干扰实现类com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color干扰 颜色,合法值: r,g,b 或者 white,black,blueblack
kaptcha.obscurificator.impl图片样式:
水纹 com.google.code.kaptcha.impl.WaterRipple
鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy
阴影 com.google.code.kaptcha.impl.ShadowGimpy
com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl背景实现类com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from背景颜色渐变,开始颜色light grey
kaptcha.background.clear.to背景颜色渐变, 结束颜色white
kaptcha.word.impl文字渲染器com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.keysession keyKAPTCHA_SESSION_KEY
kaptcha.session.datesession dateKAPTCHA_SESSION_DATE
3.Controller 层的关键代码,在浏览器直接请求就可以看到了。
	@Autowired
    private Producer producer;
    
    @ApiOperation(value = "生成验证码")
    @GetMapping("getCode")
    public void getCode(HttpServletResponse response) throws IOException {
        //生产验证码
        String text = producer.createText();
        //生产图片验证码
        BufferedImage img = producer.createImage(text);
        ServletOutputStream outputStream = response.getOutputStream();
        ImageIO.write(img,"jpg",outputStream);

        System.out.println("---------------"+text);
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值