標籤:錯誤修正 詳細 rgs return info family 將不 矩形 高度
好久沒發布部落格了,今天發了一個Java工具類,突然發現草稿箱竟然還有以前的存貨,一次性發了!!!
目錄 1.二維碼概念 2.二維碼發展曆史 3.二維碼分類 4.二維碼優缺點 5.QR Code
1.二維碼又稱 二維條碼 (2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維碼上)分布的黑白相間的圖形記錄資料符號資訊的圖形。
2二維碼發展曆史
1.20世紀20年代 約翰 科芒德實現郵政單據自動分揀方法,
2.1949年美國喬 伍德蘭德 伯尼西爾沃發明第一個條碼專利,
3.1959年 吉拉德 費伊塞爾申請了用條碼表示數位專利,
4.60年代 西爾沃尼亞發明一套條碼系統並在北美鐵路系統成功應用,
5.70年代,UPC碼(Universal Product Code)在北美超市得到廣泛應用,
6.1988年中國成立了中國物品編碼中心,80年代未國外研製出二維碼,
7.1997年到2000年確定了國家標準
3.二維碼分類
1. 一維條碼是由一組粗細不同,黑白(或彩色)相間的條,空及其相符的字元(數字字母)組成的標記,即傳統條碼。
2. 二維條碼是用某種特定的幾何圖形按一定規律在平面(二維碼上上分布的條,空間的圖形來記錄資料符號資訊
二維條碼也有許多不同的碼制,就碼制的編碼原理而言,通常分為三種
類型:
1.線性堆疊式二維碼
編碼原理: 建立在一維條碼基礎上,按需要堆積成兩行或多行。
2.矩陣式二維碼
在一個矩形空間通過黑,白像素在矩陣中的不同分布進行編碼的出現表示二進位“1”點的不出現表示二進位的“0”
3.郵政碼
郵政碼通過不同長度的條進行編碼,主要用於郵件編碼,
POSTNET、
BPO 4-STATE。
4. 二維碼優缺點
5. QR Code
目前流行的三大國標準:
PDE417:不支援中文
DM:專利未公開,需要支付專利費用
QR Code:專利公開,支援中文
QR Code比其他二維碼相比,具有識讀速度快,資料度大,佔用空間小的優勢。
QR Code 是由日本Denso公司於1994年研製的一種矩陣二維碼符號碼,全稱是Quick Response Code。
錯誤修正能力
L級: 約可錯誤修正7%的資料碼字M級: 約可錯誤修正15%的資料碼字Q級: 約可錯誤修正25%的資料碼字H級: 約可錯誤修正30%的資料碼字
6. 二維碼製作:Java語言開發
首先引入zxing的jar包
jar包:連結:https://pan.baidu.com/s/1GzjQOqWhZYPsL0uzf569dw 密碼:kril
詳細操作:
package cn.code;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.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/** * * @author: 房上的貓 * * @time: 下午11:38:45 * * @部落格地址: https://www.cnblogs.com/lsy131479/ * * 產生二維碼 */public class Zxing { public static void main(String[] args) { Zxing zxing = new Zxing(); // 傳參:二維碼內容和產生路徑 if (zxing.orCode("https://www.cnblogs.com/lsy131479/", "F:\\1.jpg")) { System.out.println("ok,成功"); } else { System.out.println("no,失敗"); } } private boolean orCode(String content, String path) { /* * 圖片的寬度和高度 */ int width = 300; int height = 300; // 圖片的格式 String format = "png"; // 二維碼內容 // String content = "hello,word"; // 定義二維碼的參數 HashMap hints = new HashMap(); // 定義字元集編碼格式 hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); // 錯誤修正的等級 L > M > Q > H 錯誤修正的能力越高可儲存的越少,一般使用M hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); // 設定圖片邊距 hints.put(EncodeHintType.MARGIN, 2); try { // 最終產生 參數列表 (1.內容 2.格式 3.寬度 4.高度 5.二維碼參數) BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints); // 寫入到本地 Path file = new File(path).toPath(); MatrixToImageWriter.writeToPath(bitMatrix, format, file); return true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } }}
二維碼產生還有其他方式產生,今天這裡將不再講解,如果有興趣的可以關注一下作者,後續會持續出教程的
其他方式:
1.or code 產生及解析
2.jQuery-qrcode 產生及解析
Java 騷操作--產生二維碼