pom.xml依存性
< -二维码生成! - > < -のhttps:// mvnrepository.com/artifact/com.google.zxing/core - > <依存> <groupIdを> com.google.zxing </ groupIdを> <たartifactId>コア</たartifactId> <バージョン> 3.0.1 </バージョン> </依存>
/ ** *クラス名:QRCodeMax *クラス説明:生成2次元コードの背景画像+テキスト+ツールの説明 *作成:またハンサム、良いに何も人のために *作成:2018年12月日付X X Xポイントのxポイント秒 *修正:2019年2月時点X X X X日分秒 *注レビュー:更新の設定パラメータ * @version :2.0 * * / パブリック クラスQRCodeMax { // テキスト表示 プライベート 静的 最終 int型の QRCOLOR = 0x201f1f; / / 二次元コードの色:黒 プライベート 静的 最終 INT BGWHITE = 0xFFFFFFの; // 次元コード背景色:白 // セット二次元QRコードパラメータ情報 プライベート 静的地図<EncodeHintType、OBJECT> =ヒント新しい新HashMapの<EncodeHintType、OBJECT> (){ プライベート 静的 最終的な ロングのserialVersionUID = 1L ; { PUT(EncodeHintType.ERROR_CORRECTION、ErrorCorrectionLevel.M); // 設定されたエラー訂正コードは、二次元QRレベル(Hが最高レベルである)である PUT(EncodeHintType。 CHARACTER_SET、 "UTF-8"); // 設定された符号化 PUT(EncodeHintType.MARGIN、0); // 白い境界 } }; / ** * +背景画像の二次元コードを生成するためには、テキスト+で説明 * @param CodeFile図世代アドレス * @param bgImgFile背景画像アドレス * @param 幅幅の二次元コード *@paramの二次元コードの高さの高さ * @param qrUrl次元コード認識アドレス * @paramのノートテキスト記述。1 * @paramのTUIテキスト記述2 * @paramのサイズテキストサイズ * @param 二次元コードのImageSX x軸方向 * @param ImageSY二次元コードのy軸方向 * @param テキスト1X説明、軸方向1X * @param テキスト1Y説明、1Y軸方向 * @param テキスト2X説明、軸方向2X * @param テキスト2Y説明、軸方向2Y * / パブリック 静的 ボイドCreatQRCode(ファイルCodeFile、ファイルbgImgFile、整数WIDTH、整数の高さ、文字qrUrl、 文字列注、文字列TUI、整数サイズ、整数ImageSX、整数ImageSY、整数テキスト1X、整数テキスト1Y 、整数テキスト2X、整数テキスト2Y){ 試み{ MultiFormatWriter multiFormatWriter = 新しい新しいMultiFormatWriter(); // パラメータの順序である:エンコードされたコンテンツ、タイプコード、パラメータ設定画像幅、生成画像の高さ、発生 BitMatrix BM = multiFormatWriter.encode(qrUrl、BarcodeFormat.QR_CODE、幅、高さ、ヒント)を、 バッファ画像イメージ = 新しい新しいBufferedImageの(WIDTH、HEIGHT、BufferedImage.TYPE_INT_RGB); //二次元コードブラック(0xFFFFFFFFの)ホワイト(0xFF000000)に設定されているビットマップイメージデータ作成2つの色を使用して起動 するための(INT X = 0; X <WIDTH; X ++ ){ ため(INT Y = 0; Y <HEIGHT; Y ++ ) { image.setRGB(X、Y、bm.get(X、Y) ?QRCOLOR:BGWHITE); } } / * *背景画像 * / BufferedImageのbackgroundImageの = ImageIO.read(bgImgFile); INT bgWidth = backgroundImage.getWidth( ); INT qrWidth = image.getWidth()。 // 距離X背景画像側、中心 INT DISX =(bgWidth-qrWidth) - ImageSXは; // 側から距離y * * * * INT DISY = ImageSY; のGraphics2D RNG = backgroundImage.createGraphics(); rng.setComposite (AlphaComposite.getInstance(AlphaComposite.SRC_ATOP)); rng.drawImage(イメージ、DISX、DISY、幅、高さ、NULL ); / * *書かれた記述パラメータ * / カラーの、textColor = Color.white; rng.setColor(の、textColor) ; backgroundImageでrng.drawImage( 0、0、NULL); // フォントタイプとサイズ(BOLD太字/ PLAIN通常)設定 rng.setFont(新しい新しいフォント( "マイクロソフトエレガントブラック、ゴシック" 、Font.BOLD、サイズ)); // フォント色設定 rng.setColor(カラー.black); INT strWidth = rng.getFontMetrics()stringWidth(注);. // 文字表示位置1 のint disx1 =(bgWidth-strWidth)-text1X; // 約 rng.drawString(注、disx1、テキスト1Y); / / 垂直 @の文字表示位置2 int型 disx2 =(bgWidth-strWidth)-text2X; // 程度 rng.drawString(TUI、disx2、テキスト2Y); //上下 rng.dispose()。 画像 = backgroundImageの。 image.flush(); ImageIO.write(画像、 "PNG" 、codeFile)。 } キャッチ(例外e){ e.printStackTrace(); } } / ** *测试 * @paramの引数 * / パブリック 静的 ボイドメイン(文字列[]引数){ ファイルbgImgFile = 新しいファイル( "D://tu/bg.png")。// 背景图片 ファイルQrCodeFile =新しい新しいファイル(「D://tu/myqrcode.png」); // 写真場所生成する 文字列のURLを=「https://blog.csdn.net/weixin_38407595」; // 2次元コードリンク 文字列のノート=「」; // テキスト記述 ストリングTUI =「」; // テキスト記述 //は、その二次元コード生成促進 // アドレスの生成、アドレス背景、二次元コードの幅は、二次元コード、二次元アドレスコード認識、テキスト記述の高さを1 、2テキスト記述、テキストのサイズ、画像のx軸方向、y軸方向の画像、テキスト1 || 2XY軸 CreatQRCode(QrCodeFile、bgImgFile、148、 148、URL、メモ、TUI、38、408、123、0、0 、410、210 ); } }