パッケージspringbootdemo.demo.util。 輸入com.sun.deploy.net.HttpResponse。 輸入org.springframework.http.HttpRequest; 輸入javax.imageio.ImageIO; インポート持つjava.awt。* ; 輸入java.awt.image.BufferedImage。 輸入java.io.BufferedOutputStream。 輸入java.io.FileNotFoundException。 輸入java.io.FileOutputStreamは、 インポートにjava.io.IOException; 輸入java.util.Date; 輸入java.util.Randomの。 / ** 图形验证码工具类 * @author * @date 2019年8月20日午前17時54分 * / パブリック クラスGraphicVerificationCodeUtil { / * 画像の生成幅* / プライベート 静的 最終 int型の WIDTH = 150 ; / * 画像の高さ* / プライベート 静的 最終 int型 HEIGTH = 50 ; / * 文字コードの数を確認する* / プライベート 静的 最終 INT codeCount = 5。; / * 干渉の数* / プライベート 静的 最終 int型。radomLine = 5 ; / * 設定背景色* / パブリック 静的 ボイドsetBackgroundColor(のGraphics2D G){ // 設定ブラシ色 g.setColor(Color.WHITE); / * 充填矩形指定されたサイズ* / g.fillRect( 0,0 、WIDTH、HEIGTH); } パブリック 静的 ボイドaddRandomLine(Graphics2DのG ){ ランダムランダム = 新しい新しいランダム(); / * 設定干渉ライン* / 用(INT I = 0; I <radomLine; I ++は){ int型 X1 = にRandom.nextInt(WIDTH); INT Y1 = にRandom.nextInt(HEIGTH) ; int型 X2 =Random.nextInt(WIDTH); INT Y2 = にRandom.nextInt(HEIGTH); //はランダムな干渉に色を設定 g.setColor(新しい新しいカラー(にRandom.nextInt(255)にRandom.nextInt(255)にRandom.nextInt(255 ))); g.drawLine(X1、Y1、X2、Y2); } } パブリック 静的 ボイド provideImg()はスローのIOException { / * 画像を生成する* / れるBufferedImageのBufferedImage = 新しい新規のBufferedImage(WIDTH、HEIGTH、BufferedImage.TYPE_INT_BGR)を; / * 画像の絵筆を構築する* / のGraphics2D G =(のGraphics2D)bufferedImage.getGraphics(); // 背景設定 setBackgroundColor(G); // 干渉線追加 addRandomLine(G)を; // ランダム符号 列randomCode = setRandomCode(G); たFileOutputStreamたFileOutputStream = 新しい新たFileOutputStream(「Eを:/ Hello.png " ); ImageIO.write(BufferedImageの、 " PNG」、たFileOutputStream); } / ** * @description:設定ランダム符号 * @author : * @date:2019年8月20日 * @paramのヌル: * @return: * / パブリック 静的文字列setRandomCode(のGraphics2D G){ ストリングrandomCode = "" ; / * フォントの色を設定する* / g.setColor(新しい新しいカラー(20,20,20 ;)) / * フォントセット* / g.setFont(新しい新しいフォント( "ゴシック"、Font.BOLD、HEIGTH-30 )); // ランダムな文字 列randomStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz" ; ランダムランダム = 新しい新しいランダム(); //は添字定義 int型のインデックスを、 //X軸変数の定義 INT X = WIDTH / 10 ; のため(int型 I = 0;私はcodeCount <; I ++は){ インデックス = にRandom.nextInt(randomStr.length()); // 文字インデックスのインデックスを取得 チャー C = randomStr .charAt(インデックス); //はSB内の各単語に追加 // ;文字コード= C + "" randomCode = randomCode + C; // -40に40度の回転角度のランダム化された角度を追加--- int型の角=ランダム.nextInt(80) - 40 ; // スイッチラジアンに ダブルシータ角=にMath.PI * / 180 。 // 回転 // g.rotate(シータ、X、15); // 描画文字は g.drawString(C + "を"、X、HEIGTH + 10/2 ); // 戻す // (g.rotateを-シータ、X、15) 。X = WIDTH + / 5 ; } 戻りrandomCodeを; } パブリック 静的 ボイドメイン(文字列[]引数){ 試み{ provideImg(); } キャッチ(IOExceptionをE){ e.printStackTrace(); } } }