簡單製作屬於自己的二維碼
阿新 • • 發佈:2019-01-24
一、二維碼的簡介 1,二維碼或者二維條碼是用某種特定的幾何圖形按一定的規律在平面(二維方向上)分佈的黑白相間的圖形記錄資料符號資訊的圖形。 2,二維碼上有很多的點和空白,其中的點代表二進位制的1,而空白程式碼二進位制的0。 3,二維碼依據碼制的編碼原理,通常分為三種:線性堆疊式二維碼、矩陣式二維碼、郵政碼。a,線性堆疊式二維碼:建立在一維條碼基礎上,按需要堆積成兩行或多行。與一維碼很類似。b,矩陣式二維碼:(最常用)在一個矩陣空間通過黑、白畫素在矩陣中的不同分佈進行編碼。在矩陣相應元素位置上,用點(方點、圓點或其它形狀)的出現表示二進位制“1”,點的不出現表示二進位制的“0”。此文章主要是講解如何生成QR CODE二維碼。 c,郵政碼:通過不同長度的條進行編碼,主要用於郵件編碼。 4,二維碼優點:(1)高密度編碼,資訊容量大; (2)編碼範圍廣; (3)容錯能力強(假如二維碼缺失一角,一般不影響整個二維碼讀取); (4)編碼可靠性高; (5)可引入加密措施; (6)成本低,易製作,持久耐用。 5,二維碼缺點:(1)二維碼技術成為手機病毒、釣魚網站傳播的新渠道;(2)資訊洩露。 6,目前流行的三大國際標準:(1)PDF417:不支援中文; (2)DM:專利未公開,需支付專利費用; (3)QR code:專利公開,支援中文;其中QR Code(Quick Response Code)與其他二維碼相比,具有識讀速度快、資料密度大、佔用空間少的優勢。 7,這裡講解生成二維碼的兩種方法:(1)第三方jar包,zxing和qrcode.jar(2)javascript,如jquery.qrcode.js二、
- jar包zxing的地址: http://github.com/zxing/
- 得到該jar包後開啟eclipse,建立一個java專案,匯入jar包zxing。
- 建立一個生成二維碼的類CreateQRCode
package cn.zclong.zxing; import java.io.File; import java.nio.file.Path; import java.util.HashMap; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; //生成二維碼 public class CreateQRCode { public static void main(String[] args) { //圖片的寬度和高度 int width = 300; int height = 300; //圖片的格式 String format = "png"; //內容,此處放你想要放的內容(例如網頁連結),若是網址連結,要加上 "http://" 才能被微信識別, //這裡我放了一個自己寫的獲取IP地址和訪問量的小demo String content = "http://www.zclong.cn/IPCount/show.jsp"; //定義二維碼的引數 HashMap hints = new HashMap(); //編碼 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //容錯等級,與二維碼儲存的大小有關,一般選擇M hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); //邊距 hints.put(EncodeHintType.MARGIN, 2); //生成二維碼 try { BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); //存放二維碼路徑 Path file = new File("F:/code/img.png").toPath(); MatrixToImageWriter.writeToPath(bitMatrix, format, file); } catch (Exception e) { e.printStackTrace(); } } }
- 上述程式碼是用來建立二維碼的,執行可得二維碼
- 接下來我們建立一個類ReadQRCode來解析二維碼
package cn.zclong.zxing; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import javax.imageio.ImageIO; import com.google.zxing.BinaryBitmap; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.Result; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.common.HybridBinarizer; //解析二維碼 public class ReadQRCode { public static void main(String[] args) { try { MultiFormatReader multiFormatReader = new MultiFormatReader(); //二維碼的存放位置 File file = new File("F:/code/img.png"); //建立一個圖片緩衝區 BufferedImage image = ImageIO.read(file); //對圖片進行解析 BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image))); //定義二維碼的引數 HashMap hints = new HashMap(); //編碼 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); //得到解析後的result Result result = multiFormatReader.decode(binaryBitmap, hints); System.out.println("解析結果:" + result.toString()); System.out.println("二維碼格式型別·:" + result.getBarcodeFormat()); System.out.println("解析結果:" + result.getText()); } catch (NotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
- 編譯執行得到結果如下:
解析結果:http://www.zclong.cn/IPCount/show.jsp
二維碼格式型別:QR_CODE
解析結果:http://www.zclong.cn/IPCount/show.jsp
以上便是利用第三方jar包zxing來製作和解析二維碼
三、接下來介紹利用javascript,如jquery.qrcode.js來生成二維碼,這種方法比上述方法更為方便,快捷
1.首先先要下載jquery.min.js和jquery.qrcode.min.js
2.建立一個javaweb專案,引入上述的兩個js
3.建立一個qrcode.jsp
4.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>生成二維碼</title>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.qrcode.min.js"></script>
</head>
<body>
生成二維碼如下:<br>
<div id="qrcode"></div>
<script type="text/javascript">
jQuery('#qrcode').qrcode("http://www.zclong.cn/IPCount/show.jsp");
</script>
</body>
</html>
5.然後啟動tomcat,執行該專案即可生成二維碼,這種方法相對第一種方法而言更為快捷方便,而大多數我們也是使用這種方法來生成二維碼
四、以上便是生成二維碼的兩種方式,大家可以去嘗試一下製作自己的二維碼,若想要製作個性的二維碼,可以利用Bootstrap去設計logo,個性化圖片等,這裡就不一一介紹了,希望這篇文章對需要者有所幫助。
附上製作二維碼所需要的資料:https://git.oschina.net/zclong/qrcode.git