日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现二维码的生成和解析包含工具类

發布時間:2024/1/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现二维码的生成和解析包含工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。