生成验证码的方法

    技术2022-05-11  31

     /**   * 生成随机验证码   * @return   * @throws Exception   */    public ByteArrayInputStream randomYzm() throws Exception{          char[] codes={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J',        'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',        'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' };          int width=62, height=20;         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);         // 获取图形上下文         Graphics g = image.getGraphics();         // 生成随机类         Random random = new Random();         // 设定背景色         g.setColor(Color.WHITE);         g.fillRect(0, 0, width, height);         // 设定字体         g.setFont(new Font("Fixedsys",Font.PLAIN,20));         // 随机产生100条干扰线,使图象中的认证码不易被其它程序探测到         g.setColor(Color.lightGray);            for (int i=0;i<100;i++)         {         int x = random.nextInt(width);         int y = random.nextInt(height);         int xl = random.nextInt(12);         int yl = random.nextInt(12);         g.drawLine(x,y,x+xl,y+yl);         }              // 取随机产生的认证码(4位数字)         StringBuilder sRand = new StringBuilder(4);         for (int i=0;i<4;i++){         String rand=String.valueOf(codes[random.nextInt(32)]);    //     sRand+=rand;         sRand.append(rand);     // 将认证码显示到图象中         g.setColor(new Color(random.nextInt(55),random.nextInt(55),random.nextInt(55)));             // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成      g.drawString(rand,15*i,16);         }              //图象生效         g.dispose();         ByteArrayInputStream input=null;         ByteArrayOutputStream output = new ByteArrayOutputStream();         try{         ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);         ImageIO.write(image, "JPEG", imageOut);         imageOut.close();         input = new ByteArrayInputStream(output.toByteArray());         }catch(Exception e){         throw new Exception("验证码图片产生出现错误");         }           //     images=input;/* 赋值图像 */       ActionContext.getContext().getSession().put("randomyzm", sRand.toString());//取得随机字符串放入HttpSession     return input;     }


    最新回复(0)