java实现二维码的生成和解析包含工具类
生活随笔
收集整理的這篇文章主要介紹了
java实现二维码的生成和解析包含工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、下載jar包( jdk1.7)
鏈接:https://pan.baidu.com/s/1LVq_zGsp_Po8V456h1TVmA
提取碼:vqyd
2、工具類Utils.java
package test;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; import jp.sourceforge.qrcode.QRCodeDecoder; import jp.sourceforge.qrcode.data.QRCodeImage; import com.swetake.util.Qrcode; /*** 工具類* @author Xuan**/ public class Utils {//解析圖片private static BufferedImage image = null;///*** 生成二維碼* @param srcValue 值* @param qrcodePicfilePath 二維碼圖片生成的路徑*/public static boolean QrCode_encode(String srcValue, String qrcodePicfilePath){//計算二維碼圖片的高寬比// API文檔規定計算圖片寬高的方式 ,v是本次測試的版本號int v =6;int width = 67 + 12 * (v - 1);int height = 67 + 12 * (v - 1);Qrcode x = new Qrcode();/*** 糾錯等級分為* level L : 最大 7% 的錯誤能夠被糾正;* level M : 最大 15% 的錯誤能夠被糾正;* level Q : 最大 25% 的錯誤能夠被糾正;* level H : 最大 30% 的錯誤能夠被糾正;*/x.setQrcodeErrorCorrect('L');x.setQrcodeEncodeMode('B');//注意版本信息 N代表數字 、A代表 a-z,A-Z、B代表 其他)x.setQrcodeVersion(v);String qrData = srcValue;try {//漢字轉格式需要拋出異常byte[] d = qrData.getBytes("utf-8");//緩沖區image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);//繪圖Graphics2D gs = image.createGraphics();gs.setBackground(Color.WHITE);gs.setColor(Color.BLACK);gs.clearRect(0, 0, width, height);//偏移量int pixoff = 2;if (d.length > 0 && d.length < 120) {boolean[][] s = x.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();image.flush();//輸出圖片ImageIO.write(image, "png", new File(qrcodePicfilePath));} catch (IOException e) {e.printStackTrace();return false;}System.out.println("二維碼生成完畢");return true;}/*** 解析二維碼* @param qrcodePicfilePath 二維碼圖片地址* @return*/public static String QrCode_decode(String qrcodePicfilePath) {System.out.println("開始解析二維碼!!");File imageFile = new File(qrcodePicfilePath);try {image = ImageIO.read(imageFile);} catch (IOException e) {System.out.println("讀取二維碼圖片失敗: " + e.getMessage());return null;}QRCodeDecoder decoder = new QRCodeDecoder();String decodedData = new String(decoder.decode(new QRCodeImage() {@Overridepublic int getWidth() {return image.getWidth();}@Overridepublic int getPixel(int arg0, int arg1) {return image.getRGB(arg0, arg1);}@Overridepublic int getHeight() {return image.getHeight();}}));System.out.println("解析內容如下:"+decodedData);return decodedData;} }3、測試類
package test;/*** 二維碼測試類* @author Xuan**/ public class Generate {public static void main(String[] args) {String data = "CSDN的小白軒";//生成二維碼Utils.QrCode_encode(data, "C:\\Users\\Administrator\\Desktop\\xiaoxuan.png");//解析二維碼Utils.QrCode_decode("C:\\Users\\Administrator\\Desktop\\xiaoxuan.png");}}4、生成效果
總結
以上是生活随笔為你收集整理的java实现二维码的生成和解析包含工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 加密和杂凑(Hashing)有什么不一样
- 下一篇: 小米、街电、携程等名企找人了,免费内推