Javaコードで書かれました

パッケージ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(); 
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/cyoba/p/11391407.html