Java 騷操作--產生二維碼

來源:互聯網
上載者:User

標籤:錯誤修正   詳細   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 騷操作--產生二維碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.