자바 배경 인증 코드 생성, 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 차원 코드 생성 도구 방법 === ==================================== //