• java验证码Captcha


    import java.awt.Color;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.patchca.color.ColorFactory;
    import org.patchca.filter.predefined.CurvesRippleFilterFactory;
    import org.patchca.filter.predefined.DiffuseRippleFilterFactory;
    import org.patchca.filter.predefined.DoubleRippleFilterFactory;
    import org.patchca.filter.predefined.MarbleRippleFilterFactory;
    import org.patchca.filter.predefined.WobbleRippleFilterFactory;
    import org.patchca.service.ConfigurableCaptchaService;
    import org.patchca.utils.encoder.EncoderHelper;
    import org.patchca.word.RandomWordFactory;
    
    public class CaptchaUtil {
    
        private static ConfigurableCaptchaService cs = new ConfigurableCaptchaService();
        private static Random random = new Random();
    
        static {
            cs.setColorFactory(new ColorFactory() {
                @Override
                public Color getColor(int x) {
                    int[] c = new int[3];
                    int i = random.nextInt(c.length);
                    for (int fi = 0; fi < c.length; fi++) {
                        if (fi == i) {
                            c[fi] = random.nextInt(71);
                        } else {
                            c[fi] = random.nextInt(256);
                        }
                    }
                    return new Color(c[0], c[1], c[2]);
                }
            });
            RandomWordFactory wf = new RandomWordFactory();
            wf.setCharacters("23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ");
            wf.setMaxLength(4);
            wf.setMinLength(4);
            cs.setWordFactory(wf);
        }
    
        public static String generate(HttpServletResponse response) throws IOException{
            switch (random.nextInt(5)) {
                case 0:
                    cs.setFilterFactory(new CurvesRippleFilterFactory(cs.getColorFactory()));
                    break;
                case 1:
                    cs.setFilterFactory(new MarbleRippleFilterFactory());
                    break;
                case 2:
                    cs.setFilterFactory(new DoubleRippleFilterFactory());
                    break;
                case 3:
                    cs.setFilterFactory(new WobbleRippleFilterFactory());
                    break;
                case 4:
                    cs.setFilterFactory(new DiffuseRippleFilterFactory());
                    break;
            }
            setResponseHeaders(response);
            return EncoderHelper.getChallangeAndWriteImage(cs, "png", response.getOutputStream());
        }
        
        
        private static void setResponseHeaders(HttpServletResponse response) {
            response.setContentType("image/png");
            response.setHeader("Cache-Control", "no-cache, no-store");
            response.setHeader("Pragma", "no-cache");
            long time = System.currentTimeMillis();
            response.setDateHeader("Last-Modified", time);
            response.setDateHeader("Date", time);
            response.setDateHeader("Expires", time);
        }
    }
  • 相关阅读:
    IEEE 网址
    知乎上非常棒的机器学习专栏
    怎样认识比你优秀的人并和他们成为朋友?
    影藏铜皮,显示原点与更改
    PCB检查事项,生成钻孔表
    布局-同样模块复用
    制作DIP Package及DIP焊盘制作,不规则焊盘制作
    制作SMD Package及SMD焊盘制作
    导入网络表
    导入DXF文件
  • 原文地址:https://www.cnblogs.com/rubekid/p/5514422.html
Copyright © 2020-2023  润新知