如何使用 Java 生成二维码?
生活随笔
收集整理的這篇文章主要介紹了
如何使用 Java 生成二维码?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 下載jar包(QRCode.jar)
下載網址如下:
QRCode生成二維碼網址:http://swetake.com/qrcode/index-e.html
2. maven項目手動引入jar包
mvn?install:install-file -DgroupId=包名 -DartifactId=項目名 -Dversion=版本號 -Dpackaging=jar-Dfile=jar文件所在路徑1,本地D盤中有個jar,例如:D:\work\Repository\QRCode.jar2,cmd?中執行mvn?install命令格式為:mvn?install:install-file?-Dfile=<path-to-file>?-DgroupId=<group-id>?-DartifactId=<artifact-id>?-Dversion=<version>?-Dpackaging=<packaging>例如:install-file?-Dfile=D:\work\Repository\QRCode.jar?-DgroupId=QRCode?-DartifactId=QRCode?-Dversion=3.0?-Dpackaging=jar??-DgeneratePom=true?-DcreateChecksum=true(注意空格)3,在pom.xml中增加如下語句<dependency><groupId>QRCode</groupId><artifactId>QRCode</artifactId><version>3.0</version> </dependency>手動引入成功如下:BUILD SUCCESS
C:\Users\zhm>mvn?install:install-file?-Dfile=D:\work\Repository\QRCode.jar?-DgroupId=QRCode?-DartifactId=QRCode?-Dversion=3.0?-Dpackaging=jar??-DgeneratePom=true?-DcreateChecksum=true [INFO]?Scanning?for?projects... [INFO] [INFO]?------------------------------------------------------------------------ [INFO]?Building?Maven?Stub?Project?(No?POM)?1 [INFO]?------------------------------------------------------------------------ [INFO] [INFO]?---?maven-install-plugin:2.4:install-file?(default-cli)?@?standalone-pom?--- [INFO]?Installing?D:\work\Repository\QRCode.jar?to?D:\work\Repository\QRCode\QRCode\3.0\QRCode-3.0.jar [INFO]?Installing?C:\Users\zhm\AppData\Local\Temp\mvninstall6966241826790879082.pom?to?D:\work\Repository\QRCode\QRCode\3.0\QRCode-3.0.pom [INFO]?------------------------------------------------------------------------ [INFO]?BUILD?SUCCESS [INFO]?------------------------------------------------------------------------ [INFO]?Total?time:?0.604?s [INFO]?Finished?at:?2018-09-30T15:16:23+08:00 [INFO]?Final?Memory:?7M/123M [INFO]?------------------------------------------------------------------------或者不做以上操作引入jar包,pom文件直接指向QRCode.jar在本地路徑<dependency><groupId>QRCode</groupId><artifactId>QRCode</artifactId><version>3.0</version><scope>system</scope><systemPath>D:/work/Repository/QRCode.jar</systemPath> </dependency>3. 編寫實體類實現二維碼的生成
package?com.st.project.common;import?com.swetake.util.Qrcode; import?jp.sourceforge.qrcode.QRCodeDecoder; import?jp.sourceforge.qrcode.data.QRCodeImage; import?jp.sourceforge.qrcode.exception.DecodingFailedException;import?java.awt.Color; import?java.awt.Graphics2D; import?java.awt.image.BufferedImage; import?java.io.File; import?java.io.IOException; import?javax.imageio.ImageIO;/***?二維碼工具類*/ public?class?CreateQRCode?{/***?創建二維碼*?@param?qrData?生成二維碼中要存儲的信息*?@param?path???二維碼圖片存儲路徑?eg:"D:/qrcode.png"*?@throws?Exception*/public?static?boolean?creatQrcode(String?qrData,?String?path)?{try?{Qrcode?qrcode?=?new?Qrcode();qrcode.setQrcodeErrorCorrect('M');//糾錯等級(分為L、M、H三個等級)qrcode.setQrcodeEncodeMode('B');//N代表數字,A代表a-Z,B代表其它字符qrcode.setQrcodeVersion(7);//版本//設置一下二維碼的像素int?width?=?67?+?12?*?(7?-?1);int?height?=?67?+?12?*?(7?-?1);BufferedImage?bufferedImage?=?new?BufferedImage(width,?height,?BufferedImage.TYPE_INT_RGB);//繪圖Graphics2D?gs?=?bufferedImage.createGraphics();gs.setBackground(Color.WHITE);gs.setColor(Color.BLACK);gs.clearRect(0,?0,?width,?height);//清除下畫板內容//設置下偏移量,如果不加偏移量,有時會導致出錯。int?pixoff?=?2;byte[]?d?=?qrData.getBytes("utf-8");if?(d.length?>?0?&&?d.length?<?120)?{boolean[][]?s?=?qrcode.calQrcode(d);for?(int?i?=?0;?i?<?s.length;?i++)?{for?(int?j?=?0;?j?<?s.length;?j++)?{if?(s[j][i])?{gs.fillRect(j?*?3?+?pixoff,?i?*?3?+?pixoff,?3,?3);}}}}gs.dispose();bufferedImage.flush();ImageIO.write(bufferedImage,?"png",?new?File(path));return?true;}?catch?(IOException?e)?{e.printStackTrace();return?false;}}/***?解析二維碼(QRCode)**?@param?imgPath?圖片路徑*?@return*/public?static?String?decoderQRCode(String?imgPath)?{//QRCode?二維碼圖片的文件File?imageFile?=?new?File(imgPath);BufferedImage?bufImg?=?null;String?content?=?null;try?{bufImg?=?ImageIO.read(imageFile);QRCodeDecoder?decoder?=?new?QRCodeDecoder();content?=?new?String(decoder.decode(new?TwoDimensionCodeImage(bufImg)),?"utf-8");}?catch?(IOException?e)?{System.out.println("Error:?"?+?e.getMessage());e.printStackTrace();}?catch?(DecodingFailedException?dfe)?{System.out.println("Error:?"?+?dfe.getMessage());dfe.printStackTrace();}return?content;}}/***?二維碼基礎類*/ class?TwoDimensionCodeImage?implements?QRCodeImage?{//BufferedImage作用將一幅圖片加載到內存中BufferedImage?bufImg;public?TwoDimensionCodeImage(BufferedImage?bufImg)?{this.bufImg?=?bufImg;}@Overridepublic?int?getWidth()?{return?bufImg.getWidth();//返回像素寬度}@Overridepublic?int?getHeight()?{return?bufImg.getHeight();//返回像素高度}@Overridepublic?int?getPixel(int?i,?int?i1)?{return?bufImg.getRGB(i,?i1);//得到長寬值,即像素值,i,i1代表像素值} }4. controller調用
package?com.st.project.controller;import?com.st.project.common.AjaxResult; import?org.springframework.beans.factory.annotation.Value; import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.PostMapping; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.ResponseBody;import?javax.servlet.http.HttpServletRequest;import?static?com.st.project.common.CreateQRCode.creatQrcode; import?static?com.st.project.common.CreateQRCode.decoderQRCode;/***?創建二維碼*/ @Controller @RequestMapping("/qrcode") public?class?QrcodeController?{@Value("${portals.upload.image.path}")private?String?qrcodePath;?//二維碼存儲路徑/***?創建二維碼*?@return*/@ResponseBody@PostMapping("/add.dd")public?AjaxResult?addQrcode(HttpServletRequest?request){AjaxResult?ajaxResult?=?new?AjaxResult();ajaxResult.setState(false);String?qrData=request.getParameter("qrData");String?qrSuffix=request.getParameter("qrSuffix");String?qrcode=System.currentTimeMillis()+"."+qrSuffix;String?path=qrcodePath+qrcode;boolean?getQrcode=creatQrcode(qrData,path);if(getQrcode==true){ajaxResult.setState(true);ajaxResult.setData(qrcode);}return?ajaxResult;}/***?解析二維碼*?@return*/@ResponseBody@PostMapping("/decoder.dd")public?AjaxResult?decoderQrcode(HttpServletRequest?request){AjaxResult?ajaxResult?=?new?AjaxResult();ajaxResult.setState(false);String?qrcode=request.getParameter("qrcode");String?qrData=decoderQRCode(qrcodePath+qrcode);if(qrData!=null?&&?!"".equals(qrData)){ajaxResult.setState(true);ajaxResult.setData(qrData);}return?ajaxResult;}}此時已生成一張名為qrcode.png的二維碼圖片:
總結
以上是生活随笔為你收集整理的如何使用 Java 生成二维码?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入浅出,Spring 框架和 Spri
- 下一篇: Java8 HashMap源码分析