(写真で使用可能)は、Java次元コード生成springbootバージョン

(2019年6月29日速いカタツムリブログ)の記事

時には、男性と女性は2つの完全に異なる世界です、男性と女性のジョークジョークも男性がどのように他の人を求めていないので、完全に、あなたは女性があなたを知っていることを期待しないでください、あなたを愛する人々を理解していない、全く異なります種類は、自分自身の世話をする、より多くの男性が自分の良い点がどうあるべきか、自問することは、最も基本的なものですが、

そうしないと、どのようにあなたが他人の世話をしない、男は競争の製品は、それがされていないのですか?

 

自宅に近いです:

まず第一に、私の依存性は現在に依存して参加します。

<! -二维码生成- > 
<依存>
<groupIdを> com.google.zxing </ groupIdを>
<たartifactId>コア</たartifactId>
<バージョン> 3.4.0 </バージョン>
</依存関係>

最初のステップ:

1]書き込みツール、幅、高さ、死んでここに書く、私が制御することができ、フロントデスクは、あなたも、あなたが望むものを修正することができると思います

パッケージcom.xxff.util。

輸入com.google.zxing *。;
輸入com.google.zxing.client.j2se.BufferedImageLuminanceSource。
輸入com.google.zxing.common.BitMatrix。
輸入com.google.zxing.common.HybridBinarizer。
輸入com.google.zxing.qrcode.decoder.ErrorCorrectionLevel。

輸入javax.imageio.ImageIO;
インポート持つjava.awt。*;
輸入java.awt.geom.RoundRectangle2D;
輸入java.awt.image.BufferedImage。
インポートのjava.io.File;
インポートにjava.io.OutputStream;
インポートするjava.util.Hashtable;

パブリッククラスQRCodeUtil {

プライベート静的最終列CHARSET = "UTF-8";
プライベート静的最終文字列FORMAT_NAME =「JPG」。
//二维码尺寸
プライベート静的最終int型のQRCODE_SIZE = 300;
// LOGO宽度
プライベート静的最終int型のWIDTH = 60;
// LOGO高度
プライベート静的最終int型のHEIGHT = 60;

プライベート静的たBufferedImageはcreateImage(文字列のコンテンツ、文字列imgPath、ブールneedCompress)は例外{スロー
Hashtableのヒント=新しいハッシュテーブルを()。
hints.put(EncodeHintType.ERROR_CORRECTION、ErrorCorrectionLevel.H)。
hints.put(EncodeHintType.CHARACTER_SET、CHARSET)。
hints.put(EncodeHintType.MARGIN、1)。
BitMatrix bitMatrix =新しいMultiFormatWriter()(コンテンツ、BarcodeFormat.QR_CODE、QRCODE_SIZE、QRCODE_SIZE、エンコード。
ヒント)。
INT幅= bitMatrix.getWidth()。
INT高さ= bitMatrix.getHeight()。
バッファ画像イメージ=新しいBufferedImageの(幅、高さ、BufferedImage.TYPE_INT_RGB)。
{(; X <幅X ++整数X = 0)のための
ための(INT Y = 0; Y <高Y ++){
(?X、Y、bitMatrix.get(x、y)は0xFF000000:0xFFFFFFFFの)image.setRGB。
}
}
もし(imgPath == NULL || "" .equals(imgPath)){
戻り画像。
}
//插入图片
QRCodeUtil.insertImage(画像、imgPath、needCompress)。
画像を返します。
}

プライベート静的ボイドinsertImage(バッファ画像ソース、列imgPath、ブールneedCompressは){例外をスロー
ファイルファイル=新しいファイル(imgPath)。
(!file.exists()){もし
System.err.println(! "" + imgPath + "该文件不存在");
返します。
}
イメージ・SRC = ImageIO.read(新しいファイル(imgPath));
INT幅= src.getWidth(NULL)。
INT高さ= src.getHeight(NULL)。
IF(needCompress){//压缩LOGO
場合(幅> WIDTH){
幅= WIDTH。
}
IF(高さ>高さ){
高さ= HEIGHT。
}
イメージ画像= src.getScaledInstance(幅、高さ、Image.SCALE_SMOOTH)。
BufferedImageのタグ=新しいBufferedImageの(幅、高さ、BufferedImage.TYPE_INT_RGB)。
グラフィックG = tag.getGraphics()。
g.drawImage(イメージ、0、0、NULL); //绘制缩小后的图
g.dispose();
SRC =画像;
}
//插入LOGO
のGraphics2Dグラフ=のsource.createGraphics()。
INT X =(QRCODE_SIZE -幅)/ 2。
INT Y =(QRCODE_SIZE -高さ)/ 2。
graph.drawImage(SRC、X、Y、幅、高さ、NULL);
形状を形作る=新しいRoundRectangle2D.Float(X、Y、幅、横幅、6,6)。
graph.setStroke(新しいのBasicStroke(3F));
graph.draw(形状)。
graph.dispose();
}

パブリック静的ボイドエンコード(文字列のコンテンツは、文字列imgPath、列DESTPATH、ブールneedCompress)は例外{スロー
バッファ画像イメージを= QRCodeUtil.createImage(コンテンツ、imgPath、needCompress)。
mkdirs(DESTPATH)。
//文字列のファイル=新しいランダム()nextInt(99999999)+ "JPG"。
// ImageIO.write(画像、FORMAT_NAME、新しいファイル(DESTPATH + "/" +ファイル));
ImageIO.write(画像、FORMAT_NAME、新しいファイル(DESTPATH));
}

パブリック静的バッファ画像エンコードは、(文字列の内容は、文字列imgPath、ブールneedCompress)をスロー例外{
バッファ画像イメージ= QRCodeUtil.createImage(コンテンツ、imgPath、needCompress)。
画像を返します。
}

パブリック静的ボイドmkdirs(文字列DESTPATH){
ファイルファイル=新しい新しいファイル(DESTPATH);
フォルダが存在しない場合は、//、mkdirsは自動的にMKDIRは異なるいくつかのディレクトリを作成します。(例外がスローされた場合には、mkdir親ディレクトリが存在しない)
IF {(File.Exists()&& file.isDirectory()!)
file.mkdirs();
}
}

パブリック静的ボイドエンコード(文字列コンテンツ、imgpath文字列、文字列{例外がスローDESTPATH)
)falseに、QRCodeUtil.encode(コンテンツ、imgpath、DESTPATHを;
}
//方法がアノテートされている
/ *
*パブリック静的ボイドエンコード(内容文字列、文字列DESTPATH、ブール
* needCompress)は例外{QRCodeUtil.encodeを(スローコンテンツ、ヌル、DESTPATH、
* needCompress);}
* /

パブリック静的ボイドエンコード(コンテンツ文字列、文字列DESTPATHは){例外をスロー
QRCodeUtil.encode(コンテンツ、ヌル、DESTPATH、偽);
}

パブリック静的ボイドエンコードは、(文字列の内容は、文字列imgPath、OutputStreamの出力、ブールneedCompress)は
例外{スロー
バッファ画像イメージ= QRCodeUtil.createImage(コンテンツ、imgPath、needCompress)。
ImageIO.write(画像、FORMAT_NAME、出力)。
}

パブリック静的ボイドエンコードは、(文字列の内容は、OutputStreamの出力)は例外{スロー
QRCodeUtil.encode(コンテンツ、ヌル、出力、偽)。
}

パブリック静的文字列デコード(ファイルのファイル)が例外{スロー
バッファ画像イメージを、
画像= ImageIO.read(ファイル)。
IF(画像== NULL){
戻りヌル。
}
BufferedImageLuminanceSourceソース=新しいBufferedImageLuminanceSource(イメージ)。
BinaryBitmapビットマップ=新BinaryBitmap(新HybridBinarizer(ソース));
結果の結果。
Hashtableのヒント=新しいHashtableの();
hints.put(DecodeHintType.CHARACTER_SET、CHARSET)。
結果=新しいMultiFormatReader()(ビットマップ、ヒント)をデコードします。
ストリングresultStr = result.getText()。
resultStrを返します。
}

パブリック静的文字列デコード(文字列のパス){例外をスロー
QRCodeUtil.decode(新しいファイル(パス))を返します。
}


}

ステップ2:テスト

2]直接マイクロチャンネルスキャンテストの結果であってもよいです

com.xxff.utilパッケージは、

パブリッククラスQrCodeTest {


公共の静的な無効メイン(文字列[] argsが){例外をスローする
二次元コードに格納されたコンテンツ//
文字列のテキスト=「I暁」;
//埋め込まれた二次元コード画像パス
文字列imgPath =「C:/ユーザー / DELL01 /デスクトップ/ ピクチャ/傑の.JPG」、
パスは//二次元コードとの名前生成
列DESTPATH =「C:/ユーザー / DELL01 /デスクトップ/ 写真/ジャム.JPG「;
//は、2次元コード生成
QRCodeUtil.encode(trueにテキスト、imgpath、DESTPATHを、);
//次元コード解析
文字列= QRCodeUtil.decode STR(DESTPATH);
//構文解析の内容をプリントアウト
のSystem.out .println(STR);

}



}

 

第三段階:制御コントローラ

3]制御コントローラ

com.xxff.controllerパッケージ; 


インポートcom.xxff.util.QRCodeUtil;
インポートcom.xxff.util.UUID;
インポートorg.springframework.beans.factory.annotation.Value;
インポートorg.springframework.web.bind.annotation.RequestMapping ;
インポートorg.springframework.web.bind.annotation.RestController;

インポートするjavax.servlet.http.HttpServletResponse;
インポートはjava.io.File;

/ **
* QRコードジェネレータをサポート中国
*
* /
@RestController
@ RequestMapping( "/ QRコードは")
publicクラスQRcodeController {
/ **
*指定されたストレージ・パスは、ここにあなた自身のプロジェクトのディスク構成へのパスです
* /
@value(値= "$ {application.profileは}")
プライベートプロファイル文字列;
/ **
* 1【化経路の二次元コードが埋め込まれた画像は、二次元コードのDに進むべきである:/ xxffprofile / QRコードダウンこのパス/、
*、および名前qrcode.jpgので
* 2画像名がnullの場合、それは純粋な二次元コードを生成する
* /
文字列imgpath =「qrcode.jpg」は、
パスは、二次元コード//生成された
「/ QRコード」列DESTPATH + =プロファイル;

@RequestMapping(「/ createQRcode」)
パブリック文字列createQRcodeを(HttpServletResponseの応答、文字列の内容は)例外をスロー{
//埋め込み画像が
TESTFILE =新しい新しいファイル(DESTPATH + imgpath)ファイル;
//保存先フォルダの
ファイルfilebag =新しい新しいファイル(DESTPATHが);
//フォルダが存在し、作成するために存在していないが
{IF(filebag.exists()!)
filebag.mkdirs();
}
QrImgPath =文字列"";
//二次元コード埋め込み画像が存在し、二次元コードの画像に存在しない純粋な生成
IF(testFile.exists()){
qrImgPath + = DESTPATH imgpath;
}
ストリングNEWNAME = UUID.getUUID() 。+ "JPG";
DESTPATH + = NEWNAME;
// 2次元コード生成
QRCodeUtil.encode(内容、trueにqrImgPath、DESTPATH、);
文字列のrpath = "QRコード/" + NEWNAME;
戻りRPATHを;

}
}

あなたが良い感じている場合、してくださいテキストを書くためにハードワークのための賞賛や賞賛、敬意を与え、簡単に再現されない~~~ありがとうございます!

おすすめ

転載: www.cnblogs.com/luojiesheng/p/11106107.html