'도구 이미지 인증 코드

자바 배경 인증 코드 생성, base64로 문자열을 반환

// ==== 2 차원 코드 생성 도구 방법 ====================================== = //
     / ** 
     * 사용법 
     * 가져 java.awt.Graphics2D; 
       오기 java.awt.image.BufferedImage; 
       
       BufferedImage와 새로운 새 이미지 = 않는 BufferedImage (폭, 높이, BufferedImage.TYPE_INT_RGB) 
        Graphics2D 문맥 G = (Graphics2D 문맥) image.getGraphics (); 
        // 1 배경색 
        Utils.setBackGround (G, 폭, 높이) 
        // 2 세트 테두리 
        Utils.setBorder (G, 폭, 높이) 
        . // 3, 라인 드로잉 간섭 
        Utils.drawRandomLine (g , 폭, 높이) 
        // 4 난수 물품 
        = Utils.drawRandomNum (G) verifycode 문자열 
        // 5 브라우저에 어드레스 
        ) (g.dispose;
        BOS = 새로운 새를 ByteArrayOutputStream에있는 ByteArrayOutputStream (); 
        ImageIO.write (이미지의 "JPEG", BOS), 
        바이트 [] = BUF bos.toByteArray (); 
        문자열 IMG = Base64Util.encode (BUF); // "/ 9J / 4AAQSkZJRgABAgA" - 이미지를 Base64 
        bos.close (); 
        리턴 IMG; 
     * / 
    / ** 
     * 설명 그래픽 코드를 생성 
     * @param 96 폭 폭 기본 이미지 
     * @param의 기본 이미지 (42)의 높이가 높이 
     * @ 반환 된 화상베이스 64, IMG 파일 문자열 삭제 "/ 9J / 4AAQSkZJRgABAgA" "데이터 : 이미지 / JPEG;베이스 64 " 
     * @author  
     * @date 2,019 니안 9 유에 20 리 
     * / 
    공용  정적 스트링 imgVerifycode (INT 폭, INT의 높이) 가 발생 {예외
         경우 (폭 <96 ) {  = 96 ; 
        } 
        경우 (높이 <42 ) { 
            높이 = 42 ; 
        } 
        BufferedImage의 이미지 = 새로운 BufferedImage의 (폭, 높이, BufferedImage.TYPE_INT_RGB); 
        Graphics2D의 g = (의 Graphics2D) image.getGraphics ();
        // 1设置背景色
        setBackground의 (g, 폭, 높이);
        // 2设置边框
        setBorder (g, 폭, 높이);
        //3 선 그리기 간섭 
        drawRandomLine (G, 폭, 높이)
         // 4 난수 넌스 기록 복귀한다. 
        = verifycode 문자열 drawRandomNum (G),
         // 5 브라우저 기록. 
        g.dispose () 
        를 ByteArrayOutputStream BOS = 새로운 새 를 ByteArrayOutputStream (); 
        ImageIO.write (이미지 의 "JPEG" , BOS),
         바이트 [] = BUF bos.toByteArray (); 
        문자열 IMG = Base64Util.encode (BUF); // "/ 9J / 4AAQSkZJRgABAgA '- 이미지를 Base64 
        bos.close ();
         리턴 IMG는; 
    } 
    // 배경색 설정 
    공개  정적 보이드 setBackground의 (그래픽 g 정수 폭 정수 높이) { 
        g.setColor (Color.WHITE); 
        g.fillRect ( 0, 0 , 폭, 높이);
        위한 ( INT 난 = 0; I <120; I ++ ) {
             INT (X) = ( INT ) (인 Math.random () * 폭);
            INT Y = ( INT ) (인 Math.random () * 높이);
            int로 적색을 = ( INT ) (인 Math.random () * 255 );
            int로 녹색을 = ( INT ) (인 Math.random () * 255 );
            INT 블루 = ( INT() 인 Math.random () * 255 ); 
            g.setColor ( 새로운 색상 (빨강, 녹색, 파랑)); 
            g.drawOval (X, Y, 1, 0 ); 
        } 
    } 
    // 设置边框
    공공  정적  무효 setBorder (그래픽 g 정수 폭 정수 높이) { 
        g.setColor (Color.LIGHT_GRAY); 
        (g.drawRect 폭 1, 1 - 2, 높이 - 2 ); 
    } 
    // 画干扰线
    공공  정적  무효 drawRandomLine (그래픽 g 정수 폭 정수 높이) { 
        g.setColor (Color.GREEN); 
        위한 ( INT I = 0; I <5; 나는 ++) {
             지능 X1 = 새로운 새로운 랜덤 ()을 nextInt (폭);
             지능 Y1 = 새로운 새로운 랜덤 ()을 nextInt (높이);
             지능 X2 = 새로운 새로운 랜덤 ()는 nextInt (폭).
             INT Y2 = 새로운 새 . 랜덤 ()는 nextInt (높이) 
            g.drawLine (X1, Y1, X2, Y2) 
        } 
    } 
    // 난수 
    공개  정적 스트링 drawRandomNum (Graphics2D 문맥 G) {
         // 폰트 색 세트 
        g.setColor (Color.RED를)
         // 집합 글꼴 스타일 
        g.setFont ( 새 새 글꼴 ( "굴림", Font.BOLD, (26))); 
        문자열 rand4 = "" ;
         INT X = 5;. // 글꼴의 위치 
        에 대한 ( INT I = 0;. I <4; I ++) { //는 네 개의 임의의 문자 생성 
            INT 학위 = 새 새 . 랜덤 ()는 nextInt을 ( ) 30 %; // 회전 각도 
            INT의 인덱스 = 새로운 새로운 랜덤 ()을 nextInt (STR_NUM.length (.)); 
            문자열 CH = STR_NUM.charAt (색인) + "" ; 
            rand4 + = CH; 
            g.rotate (과정 * 수학 .PI / 180, X, 20이다 ); 
            g.drawString (CH, X, 30  );
            g.rotate ( -degree 인 Math.PI * / 180, X (20)이다 ) 
            X + = 24; // 폰트 위치 오른쪽 15 픽셀 
        }
         리턴 rand4; 
    } 
    // ==== 2 차원 코드 생성 도구 방법 === ==================================== //

추천

출처www.cnblogs.com/itxs/p/12066588.html